使用QPainter :: CompositionMode与多个重叠的QGraphicsItems

时间:2014-08-14 16:43:55

标签: c++ qt qgraphicsitem qgraphicsscene qpainter

我有一个QGraphicsScene,其中包含MyQGraphicsItemsQGraphicsItem,我将其paint分类。在MyQGraphicsItem的{​​{1}}事件中,我有

painter->drawImage(image_rect, m_image);

因此每个MyQGraphicsItem向用户显示QImagem_image只是支持Alpha频道的QImage

m_image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied)

用户可以拖动这些项目,以便两个或更多项目的区域可以随时重叠。每当两个或多个MyQGraphicsItems重叠时,我想设置重叠区域的透明度,以便所有项目在该区域中同等可见(但非重叠区域应保持不透明)。

目前,我必须手动计算重叠,然后使用painter->setOpacity(opacity);。这是不方便和困难的。在搜索互联网后,我觉得使用QPainter::CompositionMode是正确的方法,但我不知道如何使用它。

我查看了this example,但我的情况有所不同,因为我完全分开了重叠的项目,因此我无法用一个QPainter绘制它们。任何建议都将不胜感激。

0 个答案:

没有答案