问题标签 [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.

0 投票
1 回答
1086 浏览

python - 如何在 Qlabel 中的图像顶部从 MouseEvents 绘制多边形

使用 Python , PYQT5 我想在图像顶部绘制一个多边形,该图像位于 Qlabel 小部件中。我使用了一个简单的 Qmainwindow 和在 QT 设计器中生成的标签小部件(代码如下)。

我知道在 Qmainwindow 中绘制有几个信息,如下所示:

如果您有解决此问题的方法,请告诉我。

polygon_ui 的代码在这里 - 由 QT-Designer 使用 Mainwindow + Qlabel 简单地生成:

0 投票
0 回答
28 浏览

c++ - C++ QT改变多边形点

我试图让用户能够改变形状的点。如果我创建一个矩形,我可以改变每个点,第二个我添加另一个矩形它只会改变第一个形状的点并将第一个形状移动到新的矩形上。

0 投票
1 回答
178 浏览

python - 如何计算 QPolygon 面积

我正在尝试获得蓝色和绿色 QPolygon 的交集,以及由蓝色 QPolygon 组成的百分比(见下图)。

在此处输入图像描述

我创建的多边形如下:

但是,当我尝试计算两个多边形之间的重叠时,作为蓝色多边形的百分比,我得到了一个错误的答案(它说重叠等于 1,但是,绿色多边形肯定不构成 100%蓝色多边形)。

查看由 QPolygon.size() 计算的大小时,很明显 QPolygon.size() 返回的多边形大小不正确。

返回:

显然出于 PyQt5 的某些原因,蓝色多边形小于绿色多边形。怎么来的?

我究竟做错了什么?

0 投票
1 回答
166 浏览

python - 获取 QPolygonF 的点

我在屏幕上绘制了 3 个 QPolygonF,我需要计算一个 QPolygon 的长度在另一个 QPolygon 中的长度。为了说明,黑色多边形内的红色或蓝色多边形的百分比长度:黑色多边形内的紫色线的百分比。

在此处输入图像描述

由于我没有紫色线本身,我相信我应该通过在它通过的每个 Y 坐标上取红色和蓝色多边形的值来计算它,并取两者的中点。

但是我不确定这样做的最佳方法是什么:我想将 QPolygonF 本身转换为一系列坐标,然后按照此答案中的说明使用 Shapely Geometry 来计算线条:Python - 返回 y 坐标给定 x 的多边形路径

编辑:值得一提的是,我需要拥有这些多边形的所有外部坐标,而不仅仅是定义它们的角点(红线上的所有点)

多边形被添加为

PyQt5 中是否有任何函数可以让我将 QPolygonF 转换为基础坐标?或者有没有更简单的方法来解决这个问题?

0 投票
1 回答
92 浏览

python - PyQt5:QPolygonF 的中心线

我正在尝试获取 QPolygonF 对象的中心线,这意味着对于从 min 到 max 的每个 y 坐标,位于 min 和 max X 坐标中间的线。

所需的输出将是一条中心线,但由于某种原因,绘制的对象/中心线具有区域。为什么会这样?我应该怎么做才能获得中心线?用下图中的黑线粗略估计

在此处输入图像描述

这是代码:

0 投票
2 回答
89 浏览

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)

所有情况的输出:

正确的输出:

输出

0 投票
1 回答
69 浏览

python - 在其原点上缩放 QPolygon

我正在尝试缩放位于其原点的 QGraphicsScene 的 QGraphicsView 上的 QPolygonF。

然而,即使在将多边形 (poly_2) 平移到其原点之后(使用 QPolygon.translate() 和通过 boundingRect (x+width)/2 和 (y+height)/2 接收到的多边形的中心坐标),新的多边形仍然放置在错误的位置。

蓝色多边形应该根据poly_2的原点进行缩放(请看下图,黑色是原始多边形,蓝色多边形是下面代码的结果,橙色多边形代表预期的结果) 在此处输入图像描述

我认为问题可能是坐标来自全球并且应该是本地的,但不幸的是这确实解决了这个问题。

这是代码:


编辑:我尝试将多边形保存为 QGraphicsItem,并根据 bbox 的中间 X、Y 设置其转换原点,然后从全局映射到场景,但没有运气:新多边形仍然绘制到错误的位置。

如果将点替换为仅等于边界矩形的 X,Y,则结果似乎更接近我的需要。但是,在这种情况下,原点显然是错误的。这只是随机的运气,这个答案似乎更接近我的需要吗?

在此处输入图像描述