开发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);

在Thinkvd的开发中,使用Qt实现图片水印的透明效果,关键在于将图片转换为带有alpha通道的32位图像。通过QPainter的CompositionMode设置,实现了水印的透明度调整。代码中设置了不同的 CompositionMode,包括SourceOver和DestinationIn,并通过fillRect()与drawImage()的顺序控制透明度。最后,保存处理后的图像并更新显示。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



