在Qt中绘制无限线

时间:2019-03-31 19:25:57

标签: c++ qt drawing qgraphicsscene qpainter

我在使用Qt绘图时遇到一些问题。

我需要使用QPainter在QGraphicsScene上画一条无限长的线。关于线,我只知道基点和线的方向(或者基点和一个以上的点,位于该线上)。

结果,我需要这样的东西。

但是我没有找到任何解决方案或接近我问题的东西。 我希望有人遇到类似的问题并能为我提供帮助。 预先感谢您的所有推荐。

1 个答案:

答案 0 :(得分:0)

您可以假设无限线是起点和终点不在场景中的线。

如果您计算场景的对角线长度,则可以看到任何一行的最大可见长度。

之后,您可以使用QLineF创建“无限”行。

PyQt5的示例:

direction = -45
basePoint = QPointF(200, 200)

maxLength = math.sqrt(scene.width() ** 2 * scene.height() ** 2)

line1 = QLineF(basePoint, basePoint + QPointF(1, 0)) # Avoid an invalid line
line2 = QLineF(basePoint, basePoint + QPointF(1, 0))

# Find the first point outside the scene
line1.setLength(maxLength / 2)
line1.setAngle(direction)

# Find the sceond point outside the scene
line2.setLength(maxLength / 2)
line2.setAngle(direction + 180)

# Make a new line with the two end points
line = QLineF(line1.p2(), line2.p2())

scene.addItem(QGraphicsLineItem(line))