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绘图之复合模式相关推荐

  1. Qt 2D绘图(5):绘制图像基础

    Qt 2D绘图(5):绘制图像基础 本文为原创文章,转载请注明出处,或注明转载自"黄邦勇帅(原名:黄勇) 本文出自本人原创著作<Qt5.10 GUI完全参考手册>网盘地址: ht ...

  2. Qt 2D绘图之二:抗锯齿渲染和坐标系统

    一.抗锯齿渲染 1.1 逻辑绘图 图形基元的大小(宽度和高度)始终与其数学模型相对应,下图示意了忽略其渲染时使用的画笔的宽度的样子. 1.2 物理绘图(默认情况) 在默认的情况下,绘制会产生锯齿,并且 ...

  3. Qt 2D绘图功能简单总结

    文章目录 Qt 2D绘图功能简单总结 Qt 2D绘图功能简单总结 Qt 的绘图功能非常强大,它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,还可以用来绘制文本和图片. Qt的绘图系统 ...

  4. Qt中国象棋一—— Qt 2D 绘图入门

    最近想用Qt写一个中国象棋的项目,在网上找了几个例子后,发现关于绘图部分基础为0 ,于是根据项目需要学习一下.查了一些网上的资料,在此总结一下:我比较喜欢的方式是用到什么学什么,或者自己想做一个东西, ...

  5. QT 2d绘图优化(一)

    最近在用QT做一款白板软件,在开发过程中,发现了有如下几个问题 void drawLine(QPointF endpt) {path.quadTo(path.currentPosition(),(pa ...

  6. 使用Qt进行2D绘图

    文章目录 基本绘制和填充 基本图形的绘制和填充 1. 绘制图形 2. 使用画笔 3. 使用画刷 渐变填充 1. 线性渐变 2. 径向渐变 3. 锥形渐变 坐标系统 抗锯齿渲染 1. 逻辑表示 2. 抗 ...

  7. Qt学习笔记之2D绘图

    一.概要 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类.其中QPainter用 ...

  8. 【Qt】2D绘图之绘制简单的图形

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 绘制图形 04. 画笔和画刷 05. 绘制弧线 06. 附录 01. 概述 Qt中提供了强大的2D绘图系统,可以使用同一A ...

  9. [Qt教程] 第20篇 2D绘图(十)图形视图框架(下)

    [Qt教程] 第20篇 2D绘图(十)图形视图框架(下) 楼主  发表于 2013-5-4 15:43:02 | 查看: 861| 回复: 0 图形视图框架(下) 版权声明 该文章原创于Qter开源社 ...

最新文章

  1. Asp.net MVC开发RDLC报表
  2. 新的一年,想发有关对话系统的paper?快关注时下最大热点:智能化与个性化...
  3. JVM系列之:对象的锁状态和同步
  4. 开发SPI时不要犯这个错误
  5. leetcode48. 旋转图像
  6. 程序员如何接私单做SOHO一族
  7. 文件从头开始读函数_如何从头开始编写自己的Promisify函数
  8. IntelliJ Idea工作笔记004---IDEA中在Run DashBoard中添加项目
  9. Android开发笔记(八十三)多语言支持
  10. linux telnet无法连接,奇怪的问题:telnet无法连接另一台server的正常的开放端口
  11. Python调用自己写的模块
  12. NYOJ 2括号配对 栈的运用
  13. [导入]Reporting Services 6: 在服务器端报表中筛选数据
  14. 清华大学2008年硕士生招生参考书目录
  15. 华硕台式计算机编号,怎么查看华硕电脑设备序列号
  16. 2021-09-09 一个python代码验证身份证号码
  17. js中utf8和中文互转的方法
  18. uniapp App端 实现pdf文件预览
  19. 75岁老人用excel表格画画,令人叹服!
  20. TCP/TP OSI7层模型和TCP/TP4层模型

热门文章

  1. 详解C调用lua脚本效率测试
  2. [转]PHP程序61条面向对象分析设计的经验原则
  3. cxgrid按条件计算合计值
  4. linux查看进程占用pcu,Linux运维:如何使用ss代替netstat命令
  5. java编译时多态和运行时多态_运行时多态、编译时多态和重载、重写的关系(不区分Java和C#,保证能看懂!)...
  6. 清华大学计算机系保送,2018年北大、清华五大学科竞赛集训队保送生争夺战结果...
  7. Java多线程-线程中止
  8. virtualenv杂记
  9. mysql中union与union all的区别
  10. linkedHashMap源码解析(JDK1.8)