Qt是否具有添加混合模式?

时间:2018-11-24 08:21:37

标签: qt qpainter

QPainter具有许多合成模式,但没有一种称为加性。我很感兴趣,因为在游戏中一直都使用添加剂混合来照明/粒子。 重叠模式是唯一具有类似灯光效果的模式。

编辑:我已经弄清楚了,这是您如何有效地在Qt中制作不同颜色的灯光。

在构造函数中或任何地方,而不在绘画事件中:

light = QPixmap("light.png");
QPainter pix(light);
pix.setCompositionMode(QPainter::CompositionMode_Overlay);
pix.fillRect(light.rect(), QColor(255, 0, 0, 255)); // colorize the light in any color

绘画活动:

// Do drawing, e.g. a background
p.drawPixmap(0, 0, QPixmap("background.png"));

// draw the lighting
p.setCompositionMode(QPainter::CompositionMode_Plus);
p.drawPixmap(100, 100, light);

您可以随意重复使用相同的像素图,并以不同的不透明度或大小等进行绘制。

1 个答案:

答案 0 :(得分:1)

QPainter::CompositionMode_Plus的文档说:

  

源像素和目标像素的alpha和颜色都被加在一起。