QT 图片透明度
設置圖片的透明度
方式一是底部參考文章的內容,方式二是因為取值范圍為0.0-1.0,所以在方式一的基礎上稍加修改;方式三是“QPainter”自己的透明度設置函數。
加載圖片
QPixmap m_pixmap;QPixmap m_pixmapTemp;m_pixmap.load("./xxx.png");方式一:
int m_transparency;實現
QPainter painter(this);QPixmap temp(m_pixmap.size());temp.fill(Qt::transparent);QPainter p(&temp);// CompositionMode_Source將圖片繪制進去p.setCompositionMode(QPainter::CompositionMode_Source);p.drawPixmap(0, 0, m_pixmap);// CompositionMode_DestinationIn設置圖片的透明度p.setCompositionMode(QPainter::CompositionMode_DestinationIn);// 根據QColor中第四個參數設置透明度,此處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;實現
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將圖片繪制進去p.setCompositionMode(QPainter::CompositionMode_Source);p.drawPixmap(0, 0, m_pixmap);// CompositionMode_DestinationIn設置圖片的透明度p.setCompositionMode(QPainter::CompositionMode_DestinationIn);// 根據QColor中第四個參數設置透明度,此處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);如有錯誤請指出,謝謝!
參考文章:
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
總結
- 上一篇: 2021-2027全球与中国光刻掩膜版市
- 下一篇: C/C++实现PCA降维以及故障监测