4.7 并且喜欢在 qgraphicsview 上叠加两个图像。顶部的图像应该是半透明的,以便可以看穿它。最初,两个图像都是完全不透明的。我希望有一些函数可以为每个像素设置一个全局 alpha 值,但似乎没有这样的函数。最接近它的是 QPixmap::setAlphaChannel(const QPixmap & alphaChannel),然而,它自 Qt-4.6 起就被标记为过时了。相反,该手册引用了 QPainter 的 CompositionModes,但我没有成功地将透明度添加到我想要的不透明图像中。谁能指出我的工作示例或分享一些代码?
编辑: 我几乎很抱歉有一个自己的答案,现在就在问这个问题几个小时后。从这篇文章中,我发现以下代码可以完成这项工作。我只是想知道这是否被认为比逐像素修改 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));