QtのQGraphicsViewフレームワークを拡張して、インタラクティブなシェイダービルダを作成します。クリックしてドラッグすると、ベジェハンドルでコントロールポイントが作成され、曲線になります(Photoshopのパスと同じです)。QGraphicsViewは別のQGraphicsSceneItemにラインを接続します
私はコントロールポイントと両方のベジェハンドルポイント用に別々のアイテムを持っています。私は、ベジェ・ハンドルからコントロール・ポイントに向かうベジェ・ハンドルの線分を表示する方法に苦労しています。
ことを表示するための最善のアプローチは何ですか?私はpaintEventをオーバーライドしようとしましたが、これはラインを上手く描画しますが、ビューの一部がクリアされず、ちょっとファンキーになってしまいます。
def paintEvent(self, event):
painter = QtGui.QPainter(self.viewport())
if self.points:
painter.begin(self)
painter.fillRect(self.viewport().rect(), QtGui.QBrush(QtGui.QColor(50, 50, 50)))
for point in self.points:
if point.point_type != ControlPoint.Bezier:
continue
painter.drawLine(point.handle_1.pos().x(), point.handle_1.pos().y(),
point.handle_2.pos().x(), point.handle_2.pos().y());
painter.end()
QtGui.QGraphicsView.paintEvent(self, event)
またはライン自体のためのアイテムを作成するためのより良い方法である:ここでは
は、コードは次のように見えた何ですか?任意の洞察力を感謝!