首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPolygon containPoints没有得到预期的结果

QPolygon containPoints没有得到预期的结果
EN

Stack Overflow用户
提问于 2017-04-29 14:14:42
回答 1查看 226关注 0票数 0

我目前正在与QT合作。我是新来的,但我想做的是,我画了一条线在我的窗口,并在这里周围形成一个多边形,所以当我点击鼠标在线上,我会知道她的位置。因此,我尝试使用多边形的containsPoints()方法,但它不使用任何参数,无论是OddEvenFill还是WindingFill。

下面是一些代码,我正在创建多边形:

代码语言:javascript
复制
 QPoint topLeft(mStartPoint.x() - 2, mStartPoint.y() - 5);
QPoint topRight(mStartPoint.x() - 2, mStartPoint.y() + 5);
QPoint bottomRight(endPoint.x() + 2, endPoint.y() - 5);
QPoint bottomLeft(endPoint.x() + 2, endPoint.y() + 5);

QVector<QPoint> polygPoints{ topLeft,bottomLeft,topRight,bottomRight};

QPolygon area(polygPoints);

这是我试图找出的代码,我是否击中了这条线:

代码语言:javascript
复制
for (int i = 0; i < edges->size(); i++) {

   if((*edges)[i]->getArea().containsPoint(posEdge,Qt::WindingFill)){
       index = i;
       break;
    }
}

例如,我有一个多边形,它的坐标值为:

代码语言:javascript
复制
topLeft - x = 51, y = 49
topRight - x = 124, y = 69
bottomLeft - x = 51, y = 59
bottomRight - x = 124,y = 54

点击点的位置是:x= 80,y= 56,

代码语言:javascript
复制
containPoints()

方法仍然是假的,因为点不在多边形内。你知道我做错了什么吗?我会非常感谢你的每一个帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-29 14:55:14

您可以定义多边形的点,如下图所示:

代码语言:javascript
复制
| ⁄|
|⁄ |

尝试像绘制矩形那样定义点:

代码语言:javascript
复制
|  |
|__|

我是QVector<QPoint> polygPoints{topLeft, bottomLeft, bottomRight, topRight};。此外,还可以重复起点topLeft。用这种方式定义多边形,它是一个矩形,而不是两个三角形,而包含函数的行为应该像您所期望的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43696691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档