我目前正在与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;
}
}例如,我有一个多边形,它的坐标值为:
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()方法仍然是假的,因为点不在多边形内。你知道我做错了什么吗?我会非常感谢你的每一个帮助。
发布于 2017-04-29 14:55:14
您可以定义多边形的点,如下图所示:
| ⁄|
|⁄ |尝试像绘制矩形那样定义点:
| |
|__|我是QVector<QPoint> polygPoints{topLeft, bottomLeft, bottomRight, topRight};。此外,还可以重复起点topLeft。用这种方式定义多边形,它是一个矩形,而不是两个三角形,而包含函数的行为应该像您所期望的那样。
https://stackoverflow.com/questions/43696691
复制相似问题