4.7并且喜欢在qgraphicsview上叠加两个图像。顶部的图像应该是半透明的,以便透过它。最初,两幅图像都完全不透明。我期望一些函数为每个像素设置一个全局的alpha值,但似乎没有这样的函数。最接近它的是QPixmap :: setAlphaChannel(const QPixmap & alphaChannel),但是,自Qt-4.6以后,它被标记为废弃。相反,手册引用了QPainter的CompositionModes,但我没有成功将透明度添加到像我想要的不透明图像。 任何人都可以指向我的工作示例或共享一些代码?如何使QImage或QPixmap半透明 - 或为什么setAlphaChannel已过时?
编辑: 我几乎很抱歉有一个自己的答案,现在就提问后几个小时。 从这article我发现下面的代码完成这项工作。我只是想知道这是否被认为是“更好”(通常意味着更快),而不是按照像素方式修改alpha值。
QPainter p;
p.begin(image);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(image->rect(), QColor(0, 0, 0, 120));
p.end();
mpGraphicsView->scene()->addPixmap(QPixmap::fromImage(image->mirrored(false,true),0));
谢谢你做了我的问题我用QPainter :: CompositionMode_Source :) – jamk 2013-01-24 13:44:44