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);
您可以随意重复使用相同的像素图,并以不同的不透明度或大小等进行绘制。
答案 0 :(得分:1)
QPainter::CompositionMode_Plus
的文档说:
源像素和目标像素的alpha和颜色都被加在一起。