0
我已经在PyQt5中运行Qt scenegraph tutorial。好消息是,我正在承诺贝塞尔曲线。更好的是,当我调整窗口大小时,会添加新的贝塞尔曲线以匹配新的窗口大小。问题是旧的贝塞尔曲线仍然存在。如何让Qt只绘制最近的几何图形?在PyQt中更新Qt场景图
这是我从教程
def updatePaintNode(self, oldNode, _):
if not oldNode:
node = QSGGeometryNode()
geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(),
self._segment_count)
geometry.setLineWidth(2)
geometry.setDrawingMode(QSGGeometry.DrawLineStrip)
node.setGeometry(geometry)
node.setFlag(QSGNode.OwnsGeometry)
material = QSGFlatColorMaterial()
material.setColor(QColor(255, 0, 0))
node.setMaterial(material)
node.setFlag(QSGNode.OwnsMaterial)
else:
node = oldNode
geometry = node.geometry()
geometry.allocate(self._segment_count)
vertices = geometry.vertexDataAsPoint2D()
for i in range(self._segment_count):
t = float(i)/(self._segment_count-1)
invt = 1-t
pos = invt * invt * invt * self._p1 \
+ 3 * invt * invt * t * self._p2 \
+ 3 * invt * t * t * self._p3 \
+ t * t * t * self._p4 \
x = pos.x() * self.width()
y = pos.y() * self.height()
vertices[i].set(x, y)
node.markDirty(QSGNode.DirtyGeometry)
return node
难道你不检查 - 如果调整大小后'oldNode'为空? – folibis
@folibis我在oldNode上检查null的唯一地方是上面的第二行。是否有一个单独的处理程序,我应该实施调整大小? – user640078