我有一个有一些透明区域的QPixmap。如何将突出显示/色调仅应用于具有非零alpha的区域?
这就是我现在所拥有的,它为整个图像着色。
QPixmap highlighedPixmap = myPixmap;
QPainter pixmapPainter;
pixmapPainter.begin(&highlighedPixmap);
pixmapPainter.setCompositionMode(QPainter::CompositionMode_ColorDodge);
pixmapPainter.fillRect(highlighedPixmap.rect(), QColor(180, 180, 180, 100));
pixmapPainter.end();
输入图片:
预期结果图片:
答案 0 :(得分:0)
正确的选项是CompositionMode_SourceAtop
:
QPixmap highlighedPixmap = myPixmap;
QPainter pixmapPainter(&highlighedPixmap);
pixmapPainter.setCompositionMode(QPainter::CompositionMode_SourceAtop);
pixmapPainter.fillRect(highlighedPixmap.rect(), foregroundColor);
pixmapPainter.end();
在 ... \ examples \ widgets \ painting \ composition 的Qt目录中,有一个“合成模式”工具,可让您体验所有合成模式。我在Qt 5.2.1中找到了它,但至少从Qt 4.8开始就应该存在。