gpt4 book ai didi

qt - QPainterPath 与直线的交点(通过 x 求 QPainterPath y)

转载 作者:行者123 更新时间:2023-12-02 08:36:35 25 4
gpt4 key购买 nike

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

我在QPainterPath中找到了intersected()方法。因此,我创建了新的 QPainterPath,它是具有 x 坐标的从路径边界矩形的左边缘到右边缘的线,以查找作为交集结果的点。

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

如果我使用高度 = 1 的矩形而不是直线,一切正常。

也许您有更好的想法如何找到 QPainterPath 与直线的交点?

最佳答案

根据文档:

QPainterPath QPainterPath::intersected ( const QPainterPath & p ) const

Returns a path which is the intersection of this path's fill area and p's fill area. Bezier curves may be flattened to line segments due to numerical instability of doing bezier curve intersections.

由于您的线条没有填充区域,因此该功能似乎不适合您。

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

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

Returns a list of all items that collide with item. Collisions are determined by calling QGraphicsItem::collidesWithItem(); the collision detection is determined by mode. By default, all items whose shape intersects item or is contained inside item's shape are returned. The items are returned in descending stacking order (i.e., the first item in the list is the uppermost item, and the last item is the lowermost item).

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

关于qt - QPainterPath 与直线的交点(通过 x 求 QPainterPath y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9393672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com