QT绘图

QPainter

paintEvent是Qt中一个非常重要的函数,它是QWidget类的一个事件处理函数,用于处理小部件的绘制事件。当Qt认为小部件需要重绘时(例如,窗口首次出现时,大小改变时,或者调用了小部件的update()方法时),paintEvent就会被自动调用。

使用paintEvent的基本步骤

  1. 重写paintEvent函数:要在你的小部件上进行自定义绘图,你需要在你的小部件类中重写paintEvent函数。

  2. 创建QPainter对象QPainter是Qt中用于所有绘图操作的类。在paintEvent中,你需要创建一个QPainter对象,并将其与要绘制的小部件(通常是this指针)关联起来。

  3. 使用QPainter进行绘图QPainter提供了一系列方法来绘制形状(如线条、矩形、圆形等)、文本和图像。你可以在paintEvent函数中使用这些方法来实现你的绘图逻辑。

  4. 结束绘图:当你完成绘图后,QPainter对象会在离开作用域时自动销毁,此时所有的绘图操作都会被提交到屏幕上。

画矩形

QRectF是Qt框架中的一个类,用于表示矩形的位置和大小。与QRect相比,QRectF使用浮点数来表示坐标和尺寸,这允许进行更精确的图形绘制和布局计算。QRectF主要用于图形和界面元素的布局管理,以及在绘图操作中指定元素的位置和大小

画圆弧

drawArc函数是QPainter类的一个成员函数,用于在图形界面上绘制一个弧线。弧线是从椭圆中截取的一部分,定义了起始角度和跨越的角度范围。此函数非常适用于绘制圆形的一部分、圆环或者任何需要弧形的场景。

画椭圆

画多边形

QPolygon是Qt框架中的一个类,用于表示一个多边形。这个类提供了一系列的方法来操作多边形的顶点,使得它非常适合用于图形绘制和界面设计中处理多边形形状。QPolygon基本上是一个包含QPoint对象的列表,每个QPoint代表多边形的一个顶点。QPolygon提供了各种方法来添加、移除或修改其顶点,以及进行其他操作如多边形的平移和缩放。

画路径

FillRule是Qt中用来决定如何填充(绘制内部)一个图形(特别是复杂图形和路径)的规则。在Qt中,FillRule主要应用于QPainterPath类,它定义了填充路径时如何判断路径内部和外部的规则,从而影响图形的填充效果。FillRule对于处理自相交的路径或者多个子路径组合成的复杂图形尤其重要。

Qt提供了两种FillRule

Qt::WindingFill(默认)

  • 非零环绕规则:这个规则通过计算一个点到图形各边缘的线段的环绕数来决定该点是否在图形内部。简单来说,对于任意给定的点,从该点出发画一条射线,然后检查这条射线与路径的交点,根据交点处路径的方向增加或减少环绕数。如果最终环绕数非零,则认为该点在路径内部,应被填充。这个规则能够正确处理大多数自相交的图形。

Qt::OddEvenFill

  • 奇偶规则:对于给定的点,同样从该点出发画一条任意射线,计算射线与路径的交点数。如果这个数是奇数,点被认为是在图形内部;如果是偶数,认为是在外部。这个规则对于某些特定的图形布局更加直观,特别是当路径自相交时。
QPainterPath path;
path.setFillRule(Qt::OddEvenFill);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/505167.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D学习之Lua热更新解决方案(二)XLua

文章目录 1 XLua概述2 xLua导入和AB包相关准备3 C#调用Lua3.1 Lua解析器3.2 文件加载重定向3.3 Lua解析器管理器3.3.1 重定向AB包内的Lua3.3.2 获得_G大表 3.4 全局变量的获取3.5 全局函数的获取3.5.1 无参无返回3.5.2 有参有返回3.5.3 多返回值3.5.4 变长参数 3.6 List和Dicti…

DFA还原白盒AES密钥

本期内容是关于某app模拟登录的,涉及的知识点比较多,有unidbg补环境及辅助还原算法,ida中的md5以及白盒aes,fart脱壳,frida反调试 本章所有样本及资料均上传到了123云盘 llb资料官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 目录 首先抓包 fart脱壳 加密位置定位…

运筹学_1.1.4 线性规划问题-解的概念

1.1.4 线性规划问题-解的概念 一、可行解与最优解二、基的概念三、基变量、基向量;非基变量、非基向量;基解、基可行解;四、最优解与可行解、基可行解的关系五、用例题(枚举法)巩固基解、基可行解、最优解三个概念1、例…

【JAVA】JDK内置工具之appletviewer

下载java 下载java的时候会先下载Java jdk,Java Development Kit Java开发工具包。 然后会下载jre,也就是Java Runtime Environment Java运行环境。什么是JDK、JRE?_java中的jdk,jre代表什么-CSDN博客 下载之后先找到java下的bin文件&#x…

element-plus 的el-img组件访问oss图片自动拼接前端地址

这是我的组件代码 <el-image style"width: 100px; height: 100px" :src"scope.row.logo" />访问时候 竟然凭借上了前端的地址端口 原来是我的oss服务是使用了域名做cdn加速的 内容分发网络&#xff08;CDN&#xff09;或者服务器配置&#xff0c;可…

【NDK系列】Android tombstone文件分析

文件位置 data/tombstone/tombstone_xx.txt 获取tombstone文件命令&#xff1a; adb shell cp /data/tombstones ./tombstones 触发时机 NDK程序在发生崩溃时&#xff0c;它会在路径/data/tombstones/下产生导致程序crash的文件tombstone_xx&#xff0c;记录了死亡了进程的…

【C++入门】缺省参数 | 函数重载

目录 4.缺省参数 4.1缺省参数的概念 4.2缺省参数分类 4.3声明和定义分离&#xff08;声明使用缺省参数&#xff09; 4.&#x1f40d;声明和定义分离到链接 5.函数重载 5.1函数重载的概念 5.2可执行程序的形成步骤 5.3C支持函数重载的原理—名字修饰(name Mangling) 4.…

180基于matlab的频率切片小波变换程序(FTWT)

基于matlab的频率切片小波变换程序&#xff08;FTWT&#xff09;。从一种新的角度出发&#xff0c;通过自由选择频率切片函数、引进新尺度参数&#xff0c;在频率域实现小波变换&#xff0c;该变换能够很好地刻画信号各成分之间的相对能量关系。此外&#xff0c;频率切片小波变…

YOLOv9有效提点|加入SGE、Ge、Global Context、GAM等几十种注意力机制(四)

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文只有代码及注意力模块简介&#xff0c;YOLOv9中的添加教程&#xff1a;可以看这篇文章。 YOLOv9有效提点|加入SE、CBAM、ECA、SimA…

超强预测算法:XGBoost预测模型

目录 往期精彩内容&#xff1a; 多变量特征序列、单序列数据预测实战 前言 1 风速数据预处理与数据集制作 1.1 导入数据 1.2 多变量数据预处理与数据集制作 1.3 单序列数据预处理与数据集制作 2超强模型XGBoost——原理介绍 3 模型评估和对比 3.1 随机森林预测模型 3…

蓝桥杯Java B组历年真题(2013年-2021年)

一、2013年真题 1、世纪末的星期 使用日期类判断就行&#xff0c;这里使用LocalDate&#xff0c;也可以使用Calendar类 答案 2099 使用LocalDate import java.time.LocalDate; import java.time.format.DateTimeFormatter; // 1:无需package // 2: 类名必须Main, 不可修改p…

重生奇迹mu魔法师用什么技能刷怪

1、在重生奇迹mu中&#xff0c;魔法师刷怪可采用多种技能。其中&#xff0c;火球术、冰箭术、雷电术、火墙术、冰咆哮术等单体伤害技能较为常用&#xff0c;可以快速消灭单个怪物。 2、同时&#xff0c;群体伤害技能如流星雨、冰风暴、雷霆一击等也可在多个怪物间快速切换&…