Рисование бесконечной линии в Qt - PullRequest
0 голосов
/ 31 марта 2019

У меня есть некоторые проблемы с рисованием в Qt.

Мне нужно нарисовать бесконечную линию на QGraphicsScene с помощью QPainter. А про линию я знаю только базовую точку и направление линии (или базовую точку и еще одну точку, лежащую на этой линии).

В результате мне нужно что-то подобное.

Но я не нашел никаких решений или чего-то близкого к моей проблеме. Я надеюсь, что кто-то сталкивался с подобной проблемой и сможет мне помочь. Заранее благодарим за все ваши рекомендации.

1 Ответ

0 голосов
/ 01 апреля 2019

Можно предположить, что бесконечная линия - это линия, начальная и конечная точки которой находятся за пределами сцены.

Если вы вычислите длину диагонали вашей сцены, у вас будет максимальная видимая длина любой линии.

После этого вы можете использовать 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))
...