qgraphicsview 过一点做直线的垂线
时间: 2024-01-31 14:03:09 浏览: 136
在 `QGraphicsView` 中绘制垂线可以使用 `QGraphicsLineItem`,然后设置线条的起点和终点坐标,并且设置线条的角度为垂直于原始线条的角度。以下是一个示例代码:
```python
from PyQt5.QtWidgets import QGraphicsView, QGraphicsScene, QGraphicsLineItem
from PyQt5.QtCore import Qt, QPointF
class MyGraphicsView(QGraphicsView):
def __init__(self):
super().__init__()
self.scene = QGraphicsScene(self)
self.setScene(self.scene)
# 添加原始的直线
line = QGraphicsLineItem(QPointF(0, 0), QPointF(100, 100))
self.scene.addItem(line)
# 添加垂线
perp_line = QGraphicsLineItem()
perp_line.setPen(Qt.red)
angle = line.line().angle() + 90 # 计算垂直角度
length = 50 # 垂线长度
x = line.line().x1() + length * cos(angle)
y = line.line().y1() + length * sin(angle)
perp_line.setLine(line.line().x1(), line.line().y1(), x, y)
self.scene.addItem(perp_line)
```
在上面的代码中,我们首先创建了一个 `QGraphicsLineItem` 对象来表示原始的直线,然后计算垂线的起点和终点坐标,并且设置垂线的角度为原始直线的角度加上 $90^\circ$。最后,我们将垂线添加到场景中,以便它能够在 `QGraphicsView` 中显示出来。
阅读全文