【Qt】2D绘图之复合模式

00. 目录

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

© 版权声明
THE END
喜欢就支持一下吧
点赞900 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容