【Qt】2D绘图之复合模式
生活随笔
收集整理的這篇文章主要介紹了
【Qt】2D绘图之复合模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
00. 目錄
文章目錄
- 00. 目錄
- 01. 概述
- 02. 開發環境
- 03. 程序示例
- 04. 附錄
01. 概述
QPainter提供了復合模式(Composition Modes)來定義如何完成數字圖像的復合,即如何將源圖像的像素和目標圖像的像素進行合并。QPainter提供的常用復合模式及其效果如下圖所示。 其中普通的類型是SoiirceOver(通常被稱為alpha混合),就是正在繪制的源像素混合在已經繪制的目標像素上,源像素的alpha分量定義了它的透明度,這樣源圖像就會以透明效果在目標圖像上進行顯示。當設置了復合模式,它就會應用到所有的繪圖操作中,例如畫筆、畫刷、漸變和pixmap/image繪制等。
enum QPainter::CompositionMode:
02. 開發環境
Windows系統:Windows10
Qt版本:Qt5.15或者Qt6
03. 程序示例
程序示例
void Widget::paintEvent(QPaintEvent *) {QPainter painter;QImage image(400, 300, QImage::Format_ARGB32_Premultiplied);// 繪制中心的正方形painter.begin(&image);painter.setBrush(Qt::green);painter.drawRect(100, 50, 200, 200);painter.setBrush(QColor(0, 0, 255, 150));painter.drawRect(50, 0, 100, 100);painter.setCompositionMode(QPainter::CompositionMode_SourceIn);painter.drawRect(250, 0, 100, 100);painter.setCompositionMode(QPainter::CompositionMode_DestinationOver);painter.drawRect(50, 200, 100, 100);painter.setCompositionMode(QPainter::CompositionMode_Xor);painter.drawRect(250, 200, 100, 100);painter.end();painter.begin(this);painter.drawImage(0, 0, image);}運行結果
這里先在Qlmage上繪制了一個矩形,然后又在這個矩形的4個角分別繪制了4個小矩形,每個小矩形都使用了不同的復合模式,并且使用了半透明的顏色進行填充。 第一個小矩形沒有明確指定復合模式,它默認使用的是SourceOver模式。
04. 附錄
源碼下載:【Qt】2D繪圖之復合模式.rar
總結
以上是生活随笔為你收集整理的【Qt】2D绘图之复合模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Qt】2D绘图之绘制图像(二)
- 下一篇: 【Qt】2D绘图之窗口-视口转换