获取半透明度的图像

2023-07-24  本文已影响0人  雯饰太一
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);
上一篇下一篇

猜你喜欢

热点阅读