qt设置文本背景透明_Qt QImage图片透明设置(Thinkvd开发日志) | 学步园

这篇博客介绍了在开发Thinkvd时如何设置Qt图像和文本的透明度。通过使用QPainter和QImage,作者展示了如何将图片转换为带有alpha通道的32位格式以实现透明效果。关键步骤包括设置CompositionMode为SourceOver和DestinationIn,以及调整fillRect的顺序以确保正确设置透明度。
摘要由CSDN通过智能技术生成

开发Thinkvd中的player,设置透明度用的是sdl来实现的,转换中的水印用的是png, 如何设置水印的透明度,实际上要求把图片转换成带alpha的32位即可。

实现代码:

//! [8]

void ImageComposer::recalculateResult()

{

int alpha = 100;

QPainter::CompositionMode mode = currentMode();

QPainter painter(&resultImage);

painter.setCompositionMode(QPainter::CompositionMode_Source);

painter.fillRect(resultImage.rect(), Qt::transparent);

painter.setCompositionMode(QPainter::CompositionMode_SourceOver);

//painter.drawImage(0, 0, destinationImage);

//painter.setCompositionMode(mode);

painter.drawImage(0, 0, sourceImage);    //painter.setCompositionMode(QPainter::CompositionMode_DestinationOver);

//painter.fillRect(resultImage.rect(), Qt::white);

//painter.fillRect(resultImage.rect(), QColor(0, 0, 0, alpha));

painter.setCompositionMode(QPainter::CompositionMode_DestinationIn); painter.fillRect(resultImage.rect(), QColor(0, 0, 0, alpha));

painter.end();

resultImage.save("f:/tmp/dddd.png");

resultLabel->setPixmap(QPixmap::fromImage(resultImage));

}

注意:

1.painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);不能少

2.  painter.drawImage与painter.fillRect(resultImage.rect(), QColor(0, 0, 0, alpha));顺序.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值