我有QPainterPath。我需要通过x找到QPainterPath的y坐标。
我在QPainterPath中找到了intersected()方法。所以,我创建了新的QPainterPath,它是从我的路径的边界矩形的左边到右边的x线坐标,以找到交点的结果。
intersects()方法返回true。但是intersectcted()返回空路径。
一切正常如果我使用rect = height = 1而不是line。
也许你更了解如何找到QPainterPath与line的交集?
答案 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似乎没有相同的功能。我认为你创建长矩形的方法可能是一种更简单的方法。