在Qt中混合两个不同的图像

时间:2012-06-20 14:46:05

标签: c++ qt opacity qimage qpixmap

我的程序会生成3个不同的图像,我希望使用一些不透明度设置来合并它们。

首先我有原始图像,我已将其转换为QPixmap以在QGraphicsView中显示它。

First Image

然后使用此图像我进行一些计算并生成QImage,因为我需要基本的像素访问,我还添加了一个图例。

Second Image

我想要做的是能够在修改不透明度的同时混合两个图像。 我没有显示示例的工具,它应该如下所示:

Third image

但是第一张图片和数据图片混合了不透明度。我也希望这个传说保持100%可见。如果需要,我可以为图例创建不同的QImage。

此外,我确切地知道哪个像素应该被认为是透明的而不是白色的。

将来我想用滑块调整不透明度,所以我认为如果有一个解决方案并不是每次都计算一个全新的图像会更好......

任何领导都会受到赞赏......

2 个答案:

答案 0 :(得分:3)

您可以使用QGraphicsPixmapItem :: setOpacity为覆盖图像设置0.0 ... 1.0范围内的Alpha混合值,并为前景提供单独的图形项目。

如果您确实需要使用混合图像生成像素图,则可以在QPainter上使用setOpacity,然后在其上绘制像素图。

答案 1 :(得分:0)

有一个QImage类型支持alpha通道QImage :: Format_ARGB32_Premultiplied,它将显示由alpha控制的不透明度的两个图像 - 只需将两个QImages绘制在彼此的顶部

但它是预乘的,因此如果更改A

,则需要调整所有像素