QPainterPath和line的交点(通过x找到QPainterPath y)

时间:2012-02-22 11:12:04

标签: qt point qpainter line-intersection

我有QPainterPath。我需要通过x找到QPainterPath的y坐标。

我在QPainterPath中找到了intersected()方法。所以,我创建了新的QPainterPath,它是从我的路径的边界矩形的左边到右边的x线坐标,以找到交点的结果。

intersects()方法返回true。但是intersectcted()返回空路径。

一切正常如果我使用rect = height = 1而不是line。

也许你更了解如何找到QPainterPath与line的交集?

1 个答案:

答案 0 :(得分:2)

根据文件:

  

QPainterPath QPainterPath :: intersectcted(const QPainterPath& p)const

     

返回一条路径,该路径是此路径的填充区域和p的填充区域的交集。   由于贝塞尔曲线交叉点的数值不稳定,贝塞尔曲线可能会变平为线段。

由于你的专线没有填充区域,看起来这个功能对你不起作用。

如果您使用QGraphicsScene来显示QPainterPath,则可以使用collidingItems方法:

  

QList QGraphicsScene :: collidingItems(const QGraphicsItem * item,Qt :: ItemSelectionMode mode = Qt :: IntersectsItemShape)const

     

返回与item冲突的所有项的列表。通过调用QGraphicsItem :: collidesWithItem()确定冲突;碰撞检测由模式决定。默认情况下,返回形状与项目相交或包含在项目形状内的所有项目。   这些项目按递减堆叠顺序返回(即,列表中的第一项是最上面的项目,最后一项是最下面的项目。)

不幸的是,QPainter似乎没有相同的功能。我认为你创建长矩形的方法可能是一种更简单的方法。