def updatePaintNode(self, old_node, _): if not old_node: self.node = QSGGeometryNode() geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), self.m_segment_count) geometry.setLineWidth(2) geometry.setDrawingMode(QSGGeometry.DrawLineStrip) self.node.setGeometry(geometry) self.node.setFlag(QSGNode.OwnsGeometry) material = QSGFlatColorMaterial() material.setColor(QColor(255, 0, 0)) self.node.setMaterial(material) self.node.setFlag(QSGNode.OwnsMaterial) else: geometry = self.node.geometry() geometry.allocate(self.m_segment_count) w = self.width() h = self.height() vertices = geometry.vertexDataAsPoint2D() for i in range(self.m_segment_count): t = i / (self.m_segment_count - 1) invt = 1 - t pos = invt * invt * invt * self.m_p1 \ + 3 * invt * invt * t * self.m_p2 \ + 3 * invt * t * t * self.m_p3 \ + t * t * t * self.m_p4 vertices[i].set(pos.x() * w, pos.y() * h) self.node.markDirty(QSGNode.DirtyGeometry) return self.node
def updatePaintNode(self, oldNode: QSGGeometryNode, _): if oldNode == None: node = QSGGeometryNode() geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), self._segment_count) geometry.setLineWidth(3) geometry.setDrawingMode(QSGGeometry.DrawLineStrip) node.setGeometry(geometry) node.setFlag(QSGNode.OwnsGeometry) material = QSGFlatColorMaterial() material.setColor(QColor(45, 100, 120)) node.setMaterial(material) node.setFlag(QSGNode.OwnsMaterial) else: node = oldNode geometry = node.geometry() geometry.allocate(self._segment_count) itemSize = self.size() vertices = geometry.vertexDataAsPoint2D() x1 = self._p1.x() y1 = self._p1.y() vertices[0].set(x1, y1) x2 = self._p2.x() y2 = self._p2.y() vertices[1].set(x2, y2) print(vertices[1].x) node.markDirty(QSGNode.DirtyGeometry) return node
def updatePaintNode(self, oldNode, nodeData): if self._root_node is None: self._root_node = QSGGeometryNode() geometry = QSGGeometry( QSGGeometry.defaultAttributes_Point2D(), self._segmentCount ) geometry.setLineWidth(2) geometry.setDrawingMode(QSGGeometry.GL_LINE_STRIP) self._root_node.setGeometry(geometry) self._root_node.setFlag(QSGNode.OwnsGeometry) material = QSGFlatColorMaterial() material.setColor(QColor(255, 0, 0)) self._root_node.setMaterial(material) self._root_node.setFlag(QSGNode.OwnsMaterial) else: geometry = self._root_node.geometry() geometry.allocate(self._segmentCount) w = self.width() h = self.height() vertices = geometry.vertexDataAsPoint2D() for i in range(self._segmentCount): t = i / float(self._segmentCount - 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 ) vertices[i].set(pos.x() * w, pos.y() * h) self._root_node.markDirty(QSGNode.DirtyGeometry) return self._root_node
def updatePaintNode(self, oldNode, nodeData): if self._root_node is None: self._root_node = QSGGeometryNode() geometry = QSGGeometry(QSGGeometry.defaultAttributes_Point2D(), self._segmentCount) geometry.setLineWidth(2) geometry.setDrawingMode(QSGGeometry.GL_LINE_STRIP) self._root_node.setGeometry(geometry) self._root_node.setFlag(QSGNode.OwnsGeometry) material = QSGFlatColorMaterial() material.setColor(QColor(255, 0, 0)) self._root_node.setMaterial(material) self._root_node.setFlag(QSGNode.OwnsMaterial) else: geometry = self._root_node.geometry() geometry.allocate(self._segmentCount) w = self.width() h = self.height() vertices = geometry.vertexDataAsPoint2D() for i in range(self._segmentCount): t = i / float(self._segmentCount - 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 vertices[i].set(pos.x() * w, pos.y() * h) self._root_node.markDirty(QSGNode.DirtyGeometry) return self._root_node