我正在尝试使用 Qt Graphics Framework 绘制具有大量节点(2000+)的图形。使用QGraphicsView
和QGraphicsScene
我可以很容易地用这个方法画出大量的椭圆addEllipse()
,但是改变项目的颜色setBrush()
太慢了。我也尝试过使用QGraphicsPixmapItem
然后切换像素图来改变颜色,但这也不起作用。你能给我任何建议如何做到这一点吗?使用 OpenGL 是获得更好性能的唯一方法吗?
非常感谢。
编辑:我没有画笔示例。稍后会发布。代码只是交换椭圆的画笔而已,
编辑:像素图示例(代码在 python 中与 PyQt):
def startTest(self):
self.n = 1000
self.c = 1
self.scene = QtGui.QGraphicsScene()
self.scene.setSceneRect(0,0,500,500)
self.graphicsView.setScene(self.scene)
self.redPix = QtGui.QPixmap(5, 5)
self.redPix.fill(QtGui.QColor(255,0,0))
self.blackPix = QtGui.QPixmap(5, 5)
self.blackPix.fill(QtGui.QColor(0,0,0))
for i in range(0,self.n):
temp = QtGui.QGraphicsPixmapItem(self.redPix)
temp.setPos(random.uniform(10, 490),random.uniform(10, 490))
self.scene.addItem(temp)
def updateNodes(self):
if self.c:
for i in self.scene.items():
i.setPixmap(self.blackPix)
self.c = 0
else:
for i in self.scene.items():
i.setPixmap(self.redPix)
self.c = 1