获取半透明度的图像

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);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容