QT 图片透明度
設(shè)置圖片的透明度
方式一是底部參考文章的內(nèi)容,方式二是因?yàn)槿≈捣秶鸀?.0-1.0,所以在方式一的基礎(chǔ)上稍加修改;方式三是“QPainter”自己的透明度設(shè)置函數(shù)。
加載圖片
QPixmap m_pixmap;QPixmap m_pixmapTemp;m_pixmap.load("./xxx.png");方式一:
int m_transparency;實(shí)現(xiàn)
QPainter painter(this);QPixmap temp(m_pixmap.size());temp.fill(Qt::transparent);QPainter p(&temp);// CompositionMode_Source將圖片繪制進(jìn)去p.setCompositionMode(QPainter::CompositionMode_Source);p.drawPixmap(0, 0, m_pixmap);// CompositionMode_DestinationIn設(shè)置圖片的透明度p.setCompositionMode(QPainter::CompositionMode_DestinationIn);// 根據(jù)QColor中第四個(gè)參數(shù)設(shè)置透明度,此處position的取值范圍是0~255p.fillRect(temp.rect(), QColor(0, 0, 0, m_transparency));p.end();m_pixmapTemp = temp.copy();painter.drawPixmap(0, 0, m_pixmap.size().width(), m_pixmap.size().height(), m_pixmapTemp);方式二:
double m_alpha;QColor m_color;QBrush m_brush;實(shí)現(xiàn)
m_color.setRedF(0.0);m_color.setBlueF(0.0);m_color.setGreenF(0.0);m_color.setAlphaF(m_alpha);m_brush.setColor(m_color);m_brush.setStyle(Qt::SolidPattern);QPixmap temp(m_pixmap.size());temp.fill(Qt::transparent);QPainter p(&temp);// CompositionMode_Source將圖片繪制進(jìn)去p.setCompositionMode(QPainter::CompositionMode_Source);p.drawPixmap(0, 0, m_pixmap);// CompositionMode_DestinationIn設(shè)置圖片的透明度p.setCompositionMode(QPainter::CompositionMode_DestinationIn);// 根據(jù)QColor中第四個(gè)參數(shù)設(shè)置透明度,此處position的取值范圍是0~255p.setBrush(m_brush);p.fillRect(temp.rect(), m_brush);p.end();m_pixmapTemp = temp.copy();painter.drawPixmap(0, 0, m_pixmap.size().width(), m_pixmap.size().height(), m_pixmapTemp);方式三:
painter.setOpacity(m_alpha);painter.drawPixmap(0, 0, m_pixmap.size().width(), m_pixmap.size().height(), m_pixmap);如有錯(cuò)誤請(qǐng)指出,謝謝!
參考文章:
https://blog.csdn.net/yejin_tianming/article/details/105113668?utm_medium=distribute.pc_relevant.none-task-blog-utm_term-1&spm=1001.2101.3001.4242
總結(jié)
- 上一篇: 2021-2027全球与中国光刻掩膜版市
- 下一篇: s3c2440移植MQTT