gpt4 book ai didi

c++ - 了解 QGraphicsItem boundingRect 和 shape 方法之间的交互

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:47 27 4
gpt4 key购买 nike

我对 Qt 的 QGraphicsScene 非常有经验,但我希望有人可以澄清有关 boundingRectshape 的细节QGraphicsItem 的方法。据我所知,文档没有解决这个具体问题。

我遇到这样一种情况,我需要为许多复杂路径计算一个形状,该形状包括一个轻微的缓冲区,以使用户更容易点击和选择路径。我正在使用 QPainterPathStroker,它很昂贵。我目前正在尝试延迟形状计算,直到实际调用形状方法,这有助于提高性能。

现在的情况是,边界矩形是根据路径边界加上任何笔宽计算得出的,这对于封闭绘制区域是正确的。但是,在计算shape结果时,由于选择缓冲区比绘图区域大,所以它比边界矩形大。

这是个问题吗? boundingRect 不包含 shape 结果区域是否可以接受?还是在重新计算shape时需要重新计算boundingRect

谢谢。

道格·麦格拉思

最佳答案

QGraphicsItem::shape用于对象碰撞检测、 HitTest 和了解鼠标点击发生的位置。

相比之下,QGraphicsItem::boundingRect在绘制对象时使用,知道对象何时离开屏幕或被遮挡。正如 boundingRect 的文档所述:-

QGraphicsView uses this to determine whether the item requires redrawing.

因此,boundingRect 应该完全包含从形状函数返回的 QPainterPath

关于c++ - 了解 QGraphicsItem boundingRect 和 shape 方法之间的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192892/

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