我对 Qt 的 QGraphicsScene
非常有经验,但我希望有人可以澄清有关 boundingRect
和 shape
的细节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/