获取半透明度的图像

图像二次处理

Posted by 雯饰太一 on June 25, 2023

获取半透明度的图像

1
2
3
4
5
6
7
8
9
10
void GetHalfOpicityPixmap(QPixmap& dest, QPixmap& source)
{
	dest = QPixmap(source.width(), source.height());
	dest.fill(Qt::transparent);
	QPainter painter;
	painter.begin(&dest);
	painter.setOpacity(0.5);
	painter.drawPixmap(QRect(0, 0, source.width(), source.height()), source);
	painter.end();
}

备注:可以添加透明度参数,获取不同透明度的图像;这里主要用于标识当前对象数据为空。

其中使用dest.fill(Qt::transparent)非常重要,这句话首先将pixmap填充成了透明,然后才进行的绘制,而且这个过程是可以在线程中进行的,在线程工作对象将图像绘制出来之后,可以直接将结果返回给主线程使用。

如果大图变成了小图有的时候会有一些锯齿,可以使用如下代码来是的图像平滑,并且抗锯齿:

1
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);