【发布时间】:2017-01-29 11:17:25
【问题描述】:
我正在扩展 Qt 的 QGraphicsView 框架以创建交互式形状生成器。当您单击并拖动时,它会创建一个带有贝塞尔手柄的控制点以影响其曲线(与 Photoshop 中的路径相同)。
我有单独的控制点和两个贝塞尔处理点。我正在努力寻找一种显示贝塞尔手柄线段的方法,即从贝塞尔点到控制点。
显示它的最佳方法是什么?我试图覆盖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)
或者是为生产线本身创建项目的更好方法?感谢任何见解!
【问题讨论】: