问题标签 [qpolygon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在 Qlabel 中的图像顶部从 MouseEvents 绘制多边形
使用 Python , PYQT5 我想在图像顶部绘制一个多边形,该图像位于 Qlabel 小部件中。我使用了一个简单的 Qmainwindow 和在 QT 设计器中生成的标签小部件(代码如下)。
我知道在 Qmainwindow 中绘制有几个信息,如下所示:
PyQT5:如何在 QLabel Widget 中以交互方式绘制图像?- 在 Qlabel 小部件中没有解决方案。
使用 PyQt5 在 QLabel 中绘制图像- 标记的解决方案尚不清楚,因为在 Qlabel 上绘制也没有解决
PYQT5 绘图线- Qlabel 上的paintevent 正在工作,但不在图像之上
使用 paintEvent 在 QLabel 中绘画- 但也无法解决在图像上绘制的问题。
如果您有解决此问题的方法,请告诉我。
polygon_ui 的代码在这里 - 由 QT-Designer 使用 Mainwindow + Qlabel 简单地生成:
c++ - C++ QT改变多边形点
我试图让用户能够改变形状的点。如果我创建一个矩形,我可以改变每个点,第二个我添加另一个矩形它只会改变第一个形状的点并将第一个形状移动到新的矩形上。
python - 获取 QPolygonF 的点
我在屏幕上绘制了 3 个 QPolygonF,我需要计算一个 QPolygon 的长度在另一个 QPolygon 中的长度。为了说明,黑色多边形内的红色或蓝色多边形的百分比长度:黑色多边形内的紫色线的百分比。
由于我没有紫色线本身,我相信我应该通过在它通过的每个 Y 坐标上取红色和蓝色多边形的值来计算它,并取两者的中点。
但是我不确定这样做的最佳方法是什么:我想将 QPolygonF 本身转换为一系列坐标,然后按照此答案中的说明使用 Shapely Geometry 来计算线条:Python - 返回 y 坐标给定 x 的多边形路径
编辑:值得一提的是,我需要拥有这些多边形的所有外部坐标,而不仅仅是定义它们的角点(红线上的所有点)
多边形被添加为
PyQt5 中是否有任何函数可以让我将 QPolygonF 转换为基础坐标?或者有没有更简单的方法来解决这个问题?
pyqt5 - QPolygons 边缘的交点/获取 QPolygon 边缘上的所有点
我有两个封闭的 QPolygonF,我需要找出它们的边缘(即它们的轮廓)是否相交。由于这些多边形可能相互包含,因此仅查看多边形的交点是行不通的。
PyQt5 有一个内置函数来检查一个点是否在多边形的轮廓线上, contains(QPointF(x,y))。因此,对 QPolygonF 中的每个点使用这种方法似乎很明显:
但是,由于我的 QPolygons 仅由它们的角点组成,因此这是行不通的。
获取构成 QPolygonF 轮廓的所有点并在其上运行相同的函数(iso polygon1.size())似乎是合乎逻辑的下一步。
应该怎么做呢?
为了更好地说明这个概念,该函数应为下图中的第 1、第 4 和第 5 个插图返回 1。
编辑:在此处添加了一些代码以显示某些建议的答案不起作用。
输入:
@alec 建议的功能:
@Yves Daoust 建议的逻辑:
用户界面
musicamante 建议的解决方案:
当然需要在 UI 文件中编辑 check_if_two_polygons_share_contour 以包含 polycoords iso 多边形check_if_two_polygons_share_contour(polygon1_main_object,polygon2_secondary_not_touching) ---> check_if_two_polygons_share_contour(polycoords1_main_object, polycoords2_secondary_not_touching)
所有情况的输出:
正确的输出:
python - 在其原点上缩放 QPolygon
我正在尝试缩放位于其原点的 QGraphicsScene 的 QGraphicsView 上的 QPolygonF。
然而,即使在将多边形 (poly_2) 平移到其原点之后(使用 QPolygon.translate() 和通过 boundingRect (x+width)/2 和 (y+height)/2 接收到的多边形的中心坐标),新的多边形仍然放置在错误的位置。
蓝色多边形应该根据poly_2的原点进行缩放(请看下图,黑色是原始多边形,蓝色多边形是下面代码的结果,橙色多边形代表预期的结果)
我认为问题可能是坐标来自全球并且应该是本地的,但不幸的是这确实解决了这个问题。
这是代码:
编辑:我尝试将多边形保存为 QGraphicsItem,并根据 bbox 的中间 X、Y 设置其转换原点,然后从全局映射到场景,但没有运气:新多边形仍然绘制到错误的位置。
如果将点替换为仅等于边界矩形的 X,Y,则结果似乎更接近我的需要。但是,在这种情况下,原点显然是错误的。这只是随机的运气,这个答案似乎更接近我的需要吗?