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);

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值