00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. 开发环境
  • 03. 程序示例
  • 04. 预留
  • 05. 附录

01. 概述

绘制多边形的时候就提到了填充规则Qt::FillRule,填充路径时也要使用填充规则,这里一共有两个填充规则,分别是Qt::OddEventFill和Qt::WindingFill。其中Qt::OddEventFill使用的是奇偶填充规则,具体来说就是如果要判断一个点是否在图形中,那么可以从该点向图形外引一条水平线,如果该水平线与图形的交点的个数为奇数,那么该点就在图形中。这个规则是默认值,而Qt::WindingFill使用的是非零弯曲规则,具体来说就是,如果要判断一个点是否在图形中,那么可以从该点向图形外引一条水平线,如果该水平线与图形的边线相交,这个边线是顺时针绘制的,就标记为1;是逆时针绘制的就标记为-1。然后将所有的数值相加,如果结果不为0,那么该点就在图形中。

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 程序示例

程序示例一:

    QPainter painter(this);QPainterPath path;path.moveTo(50, 250);path.lineTo(50, 230);//从当前点到点(120, 60)之间绘制一条三次贝塞尔曲线path.cubicTo(QPointF(105, 40), QPointF(115, 80), QPointF(120, 60));path.lineTo(130, 130);//添加一个椭圆path.addEllipse(QPoint(130, 130), 30, 30);painter.setPen(Qt::darkYellow);//绘制路径painter.drawPath(path);//平移坐标系统后重新绘制路径path.translate(200, 0);painter.setPen(Qt::darkBlue);painter.drawPath(path);

执行结果:

程序示例二:

void Widget::paintEvent(QPaintEvent *)
{QPainter painter(this);QPainterPath path;path.addEllipse(10, 50, 100, 100);path.addRect(50, 100, 100, 100);painter.setBrush(Qt::cyan);painter.drawPath(path);painter.translate(180, 0);path.setFillRule(Qt::WindingFill);painter.drawPath(path);}

执行结果:

先绘制了一个包含相交的椭圆和矩形的路径,因为没有显示指定填充规则,则默认使用Qt::OddEventFill规则。然后将路径进行平移,重新使用Qt::WindingFill规则绘制了该路径。

04. 预留

05. 附录

源码下载:【Qt】2D绘图之填充规则.rar

【Qt】2D绘图之填充规则相关推荐

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

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

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

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

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

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

  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绘图之渐变填充

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 线性渐变 04. 辐射渐变 05. 锥形渐变 06. 附录 01. 概述 在画刷中可以使用渐变填充.QGradient类就 ...

  8. [Qt教程] 第12篇 2D绘图(二)渐变填充

    [Qt教程] 第12篇 2D绘图(二)渐变填充 楼主  发表于 2013-4-23 17:59:31 | 查看: 689| 回复: 1 渐变填充 版权声明 该文章原创于Qter开源社区,作者yafei ...

  9. [Qt教程] 第14篇 2D绘图(四)绘制路径

    [Qt教程] 第14篇 2D绘图(四)绘制路径 楼主  发表于 2013-4-27 12:40:52 | 查看: 611| 回复: 0 绘制路径 版权声明 该文章原创于Qter开源社区(www.qte ...

最新文章

  1. php点击按钮加载控制器,php – Codeigniter 3自动加载控制器
  2. 吴恩达深度学习笔记(109)-循环神经网络模型(RNN介绍)
  3. iOS load方法和initialize方法的异同
  4. Spring Cloud Gateway真的有那么差吗?
  5. python是一门什么课程-为什么一定要让孩子学会一门编程语言?
  6. 谋定智慧农业-农民丰收节·万祥军:京东共聚黑山县三方合力
  7. 亚马逊计划明年推出云游戏服务,紧追微软谷歌;华为GaussDB数据库推出双分布式架构;腾讯擎天5G智慧灯杆助智慧城市服务升级……...
  8. 【算法基础笔记】常用的排序算法的时间、空间复杂度,部分排序算法原理
  9. CSS样式(三) - div盒子
  10. 聊一聊自来水营业收费系统
  11. python数字转换成中文大写_Python转换数字到中文大写格式
  12. 网络安全人员必考的几本证书
  13. 什么地图可以室内导航?室内导航技术发展趋势
  14. 企业如何进行客户细分 客户细分的方法和类型
  15. PDF工具Adobe Arcrobat Pro DC下载安装教程
  16. DBSCAN聚类——Python实现
  17. 浅谈DNS域名解析的过程
  18. eeepc 运用本领
  19. mac下 内存分析工具mat安装,使用mat分析:内存溢出、内存泄漏,结合jstat、jmap等命令的使用
  20. 常用的归一化(Normalization) 方法:BN、LN、IN、GN

热门文章

  1. UImenuController
  2. JAVA常见错误处理方法 和 JVM内存结构
  3. SharePoint 2010 使用自定义aspx页面替换列表默认的新建(NewForm.aspx),查看(DispForm.aspx)和编辑(EditForm.aspx)页面...
  4. [转](传输层)UDP协议
  5. 各类环境渗透测试简述
  6. ExtJS:鼠标移出菜单后菜单自动隐藏
  7. C#静态变量和非静态变量的区别
  8. vue 实现的评分小星星组件,包括半星
  9. 线性规划与网络流24题●09方格取数问题13星际转移问题
  10. 调用支付宝PHP接口API实现在线即时支付功能(UTF-8编码)