QGraphicsPathItem和QPainterPathStroker的悬停区域不正确

时间:2016-10-19 12:30:59

标签: python qt pyqt drawing qgraphicsitem

我正在编写一个继承自QGraphicsItemGroup的类,其主要子类是QGraphicsPathItem。整个过程用于绘制折线。我想为这些行设置一个合适的悬停系统,我重新实现了对象的shape方法,如下所示:

def shape(self):
    stroker = QtWidgets.QPainterPathStroker()
    stroker.setWidth(10 * self.resolution)  # resolution handles zoom and stuff
    path = stroker.createStroke(self.__path.path()).simplified()
    return path

在上面的代码段中,self.__path是我提到的QGraphicsPathItem更早。

为了简单起见,这里有几张照片。我画的线,我在屏幕上看到:

enter image description here

我想要的悬停区域:

enter image description here

我目前使用上面显示的重新实现的shape方法的悬停区域:

enter image description here

正如您所猜测的那样,这样的选区对任何目的都没有用。最糟糕的是,我尝试使用完全相同的方法来生成线的轮廓,然后使用toFillPolygon生成我在同一对象中呈现的多边形,方法是向我的对象添加QGraphicsPolygonItem子项:我的屏幕上显示的形状正是我想要的,但当我使用相同的路径通过shape创建悬停区域时,它会给我无用的悬停区域(图像3)。

那么,你知道为什么用QPainterPathStroker获得的路径允许我显示一个似乎与我想要的悬停区域完全对应的多边形,但当我在shape中使用该路径时,获得的超过面积是多么的?如果是这样,你知道如何解决这个问题吗?

0 个答案:

没有答案