首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在qt中使用QImage和QPainter将两张图片合并成一张?

如何在qt中使用QImage和QPainter将两张图片合并成一张?
EN

Stack Overflow用户
提问于 2013-09-25 15:32:31
回答 2查看 13.1K关注 0票数 6

嗨,我正在开发一个blackberry10应用程序。在应用程序中,我有两张图片,我只需要将这两张图片合并成一张图片。在Cascades中没有组合它们的函数。当我在黑莓开发者论坛上发布这篇文章时,有人建议我在qt中使用QImage和QPainter函数将两张图片合并为一张。我不知道如何使用这些函数。有人能帮我写这段代码吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-25 15:46:03

对于简单的alpha混合,你可以用QPainter做一些类似的事情。这段代码也可以很容易地调整为其他代码:

代码语言:javascript
复制
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();

这是一个非常直观的带有插图的useful part文档。

如果你使用OpenGL着色器,这将会简单得多,因为opengl提供了一些即兴的支持。我建议将来考虑切换到它,除非你是在一个有限的平台上。

注意,也有一些对QImages的alpha通道支持,但这可能不是在这里使用的最好方法,所以将其视为“出于好奇心”:

代码语言:javascript
复制
QImage::Format_ARGB32_Premultiplied 
票数 3
EN

Stack Overflow用户

发布于 2013-09-25 16:10:53

你已经被引导到了正确的地方,实际上,QPainter可能会做你想做的事情,但是当你说你想要“合并这两个图像”时,你的问题是模棱两可的。这可能意味着你想要一个和另一个的一半,或者你想以某种方式将它们混合在一起,这可能更有可能。

Qt提供了多种组合模式,提供了不同的效果。Qt提供的Here's the source code to the composition example,它向您展示了它可以做什么,并且您可以从源代码中确切地看到如何组合图像。

具体地说,您将看到第一个图像被渲染(drawBase()),然后在QPainter上设置合成模式,第二个图像被渲染(drawSource())。

简单地说,绘制第一个图像,然后像这样组合第二个图像:

代码语言:javascript
复制
QPainter p(&destImage);
p.setCompositionMode(mode);
p.drawImage(0, 0, sourceImage);

正如你从Qt documentation中看到的,有相当多不同的合成模式,它们会将你的图像“合并”成不同的效果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18998850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档