gpt4 book ai didi

qt4 - 如何使 QImage 或 QPixmap 半透明 - 或者为什么 setAlphaChannel 过时?

转载 作者:行者123 更新时间:2023-12-02 04:04:04 30 4
gpt4 key购买 nike

4.7 并喜欢在 qgraphicsview 上叠加两个图像。顶部的图像应是半透明的,以便能够透过它看到。最初,两个图像都是完全不透明的。我期望存在一些为每个像素设置全局 alpha 值的函数,但似乎没有这样的函数。最接近的是 QPixmap::setAlphaChannel(const QPixmap & alphaChannel),但是,自 Qt-4.6 以来它被标记为已过时。相反,手册引用了 QPainter 的 CompositionModes,但我没有成功地像我想要的那样为不透明图像添加透明度。谁能给我指出一个工作示例或分享一些代码?

编辑:我几乎为自己的答案感到抱歉,现在就在提出问题几个小时后。从这里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));

最佳答案

使用您的画家对象并设置不透明度。

void ClassName::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setOpacity(1.00); //0.00 = 0%, 1.00 = 100% opacity.
painter.drawPixmap(QPixmap(path));
}

关于qt4 - 如何使 QImage 或 QPixmap 半透明 - 或者为什么 setAlphaChannel 过时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172661/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com