【发布时间】:2014-05-23 16:29:04
【问题描述】:
我在QGraphicsView 的QGraphicsScene 中有一些自定义QGraphicsItems。使用items(QPoint(x, y)) 方法,我检索给定场景点的所有项目。
一旦这些项目被绘制出来,它们就不会被移动、旋转或缩放,因此它们的形状不会改变。
我想知道是否有办法仅更改重叠区域的颜色(当然,如果我至少有两个项目)。
写我的问题的另一种方式是:给定一个起点,为场景着色,直到找到一些边界。
我没有足够的声誉来发布图片,所以我上传了三个所需结果的示例here。
编辑 1: 如果我选择一个实际上位于两个项目形状内的点,则来自 Nejat 的解决方案有效,但如果该点仅属于一个项目或不属于任何项目(我上传了这个案例的一个例子here)。
也许我应该使用不同的方法?绘制后,我不需要更改项目,因此我也会对“平面/静态”面向像素的解决方案感兴趣。我可以使用QImage 类吗?
编辑 2: Nejat 的回答对原始问题是正确的。顺便说一句,出于我的目的,我使用了QImage,在其上绘制所有形状,最后使用“填充”算法来填充我想要的区域。
【问题讨论】:
标签: c++ qt overlap qgraphicsitem qgraphicsscene