我有一个QGraphicsScene
,其中包含MyQGraphicsItems
个QGraphicsItem
,我将其paint
分类。在MyQGraphicsItem
的{{1}}事件中,我有
painter->drawImage(image_rect, m_image);
因此每个MyQGraphicsItem
向用户显示QImage
。 m_image
只是支持Alpha频道的QImage
:
m_image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied)
用户可以拖动这些项目,以便两个或更多项目的区域可以随时重叠。每当两个或多个MyQGraphicsItems
重叠时,我想设置重叠区域的透明度,以便所有项目在该区域中同等可见(但非重叠区域应保持不透明)。
目前,我必须手动计算重叠,然后使用painter->setOpacity(opacity);
。这是不方便和困难的。在搜索互联网后,我觉得使用QPainter::CompositionMode
是正确的方法,但我不知道如何使用它。
我查看了this example,但我的情况有所不同,因为我完全分开了重叠的项目,因此我无法用一个QPainter
绘制它们。任何建议都将不胜感激。