如何在qt中使用QImage和QPainter将两个图像合并为一个?

use*_*249 6 c++ qt qtgui qpainter qimage

嗨,我正在开发blackberry10应用程序.在应用程序内部我有两个图像,我只需要将这两个图像合并为一个图像.Cascades中没有功能可以将它们组合在一起.当我在黑莓开发者论坛上发布这个时,我被建议在qt中使用QImage和QPainter函数将两个图像合并为一个.我不知道如何使用这些功能.有人可以帮我这个代码吗?

lpa*_*app 4

您可以使用 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)