我目前正在使用QT。我是新手,但是,我想要做的就是在我的窗口画一条线并在这里做一个多边形,所以当我用线上的鼠标点击时我会知道找到她。所以我试图使用多边形的containsPoints()
方法,但它没有任何参数OddEvenFill或WindingFill。
所以这里是我创建多边形的一些代码:
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);
以下是我试图找到的代码:
for (int i = 0; i < edges->size(); i++) {
if((*edges)[i]->getArea().containsPoint(posEdge,Qt::WindingFill)){
index = i;
break;
}
}
因此,例如,我有一个多边形,其中的坐标值为theese值:
topLeft - x = 51, y = 49
topRight - x = 124, y = 69
bottomLeft - x = 51, y = 59
bottomRight - x = 124,y = 54
并且我点击的点的位置是:x = 80,y = 56 和
containPoints()
方法仍然变为false,因为该点不在多边形内部。 你知道我做错了什么吗?我会非常感谢你的每一次帮助。
答案 0 :(得分:0)
您可以用图形方式定义多边形的点 - 如下所示:
| ⁄|
|⁄ |
尝试像绘制矩形一样定义点:
| |
|__|
这是QVector<QPoint> polygPoints{topLeft, bottomLeft, bottomRight, topRight};
。此外,您可以重复起点topLeft
。以这种方式定义多边形,它是一个矩形而不是两个三角形,并且contains函数应该像你期望的那样。