您可以使用 QPainter 执行类似的操作来进行简单的 alpha 混合。这段代码也可以很容易地调整为其他内容:
QImage surface(...);
QPainter p(&surface);
p.setCompositionMode(QPainter::CompositionMode_Source);
// p.setBrush(LinearGradient from solid to transparent right to left)
p.drawRect(surface.size());
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.drawImage(image1);
p.end();
p.begin(image2);
p.drawImage(surface);
p.end();
Run Code Online (Sandbox Code Playgroud)
这是文档中非常有用的部分,带有直观的插图。
如果您使用 OpenGL 着色器,这会简单得多,因为 opengl 对此有一些即时支持。我建议您考虑将来切换到该平台,除非您使用的平台有限。
注意,QImages 也有一些 alpha 通道支持,但这可能不是在这里使用的最佳选择,所以将其视为“出于好奇”:
QImage::Format_ARGB32_Premultiplied
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10019 次 |
| 最近记录: |