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填充成了透明,然后才进行的绘制,而且这个过程是可以在线程中进行的,在线程工作对象将图像绘制出来之后,可以直接将结果返回给主线程使用。
如果大图变成了小图有的时候会有一些锯齿,可以使用如下代码来是的图像平滑,并且抗锯齿:
painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
网友评论