背景
我想在屏幕上绘制一个简单的形状,并且选择了PyQt作为要使用的软件包,因为它似乎是最成熟的。我没有以任何方式被锁定。
问题
仅在屏幕上绘制一个简单的形状(例如多边形)似乎过于复杂。我发现的所有示例都尝试做很多额外的事情,但我不确定实际上有什么意义。
题
在PyQt中在屏幕上绘制多边形的绝对最小方法是什么?
如果有任何区别,我将使用PyQt的版本5和Python的版本3。
我不确定,你的意思是
屏幕上
您可以使用QPainter在QPaintDevice的任何子类(例如QWidget和所有子类)上绘制很多形状。
最低要求是为线条和文本设置一支笔,为填充设置一支画笔。然后创建一个多边形,设置多边形的所有点并在中绘制paintEvent()
:
import sys, math
from PyQt5 import QtCore, QtGui, QtWidgets
class MyWidget(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.pen = QtGui.QPen(QtGui.QColor(0,0,0)) # set lineColor
self.pen.setWidth(3) # set lineWidth
self.brush = QtGui.QBrush(QtGui.QColor(255,255,255,255)) # set fillColor
self.polygon = self.createPoly(8,150,0) # polygon with n points, radius, angle of the first point
def createPoly(self, n, r, s):
polygon = QtGui.QPolygonF()
w = 360/n # angle per step
for i in range(n): # add the points of polygon
t = w*i + s
x = r*math.cos(math.radians(t))
y = r*math.sin(math.radians(t))
polygon.append(QtCore.QPointF(self.width()/2 +x, self.height()/2 + y))
return polygon
def paintEvent(self, event):
painter = QtGui.QPainter(self)
painter.setPen(self.pen)
painter.setBrush(self.brush)
painter.drawPolygon(self.polygon)
app = QtWidgets.QApplication(sys.argv)
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
问题内容: 我正在尝试绘制这样的多边形: 我希望得到以下输出: 为什么仍然是零?还有另一种方法将填充的多边形绘制到数组吗? 问题答案: 这是一个奇怪的结果。我发现,如果您颠倒了点的顺序,则会绘制出完整的图形。换一种说法: 这是一个测试程序: 例子:
我能够创建一个窗口,并清除到所需的颜色。但无法在左下角绘制正方形。
问题内容: 我需要知道如何在画布上绘制多边形。不使用jQuery或类似的东西。 问题答案: 使用和创建一个路径:
问题内容: 我在本教程中使用了六边形代码,并创建了一个createHex类(我应该发布代码吗?)。链接的网页已使用以下代码通过createHex中的数学运算实际绘制六边形: 我遇到的问题是Android没有包含所有必需方法的Graphics类。我在android文档上做了大约一个半小时的钓鱼,而我发现最接近的东西是Path类,但是它没有我需要的方法。我想在顶部的链接文章中使用六边形代码,但找不到等
假设我有三个锚,来自阿拉片段的命中结果。 锚定=命中结果。createAnchor(); 如何使用Sceneform绘制三角形并应用自定义纹理?
问题内容: 这个问题已经在这里有了答案 : matplotlib-黑白颜色图(带有破折号,点等) (4个答案) 真的只有4种Matplotlib线型吗? (1个答案) 3年前关闭。 我是Python的新手,我想在一张图中绘制多条线,如下图所示。 我试过编写像这样的简单绘图代码: 我知道这些参数 但是我在第一幅图中有很多行,可以像第一幅图那样使用什么样的参数进行绘制。 谢谢 问题答案: MPL中有许
我想在Google Map V2的地图上画一个徒手多边形。 这项任务可以在地图V1中完成,但Google地图已经从V2中删除了该类。(根据此Google Map V2具有删除覆盖类)。 Google Map V1绘制自由风格多边形的好例子。 在Map V2中,我们可以借助Google官方文档以编程方式绘制多边形,但用户应该怎么做?我发现Map V2的答案不清楚 我从简单的谷歌地图开始 我在这个主题
问题内容: 我试图在bufferedimage上绘制水平和垂直线。它最终应该看起来像一个网格单元。但是,当我运行代码时,我只看到两行:最左边的行和最上面的行(即,从0,0到0,图像的高度和从0,0到图像的宽度,0的一行),这里是代码段: 和覆盖的绘制方法: 所有这些都在扩展了JPanel的名为RobotMaze的类中。任何帮助表示赞赏。 问题答案: