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