Qt的绘图系统允许使用相同的API在屏幕和打印设备上进行绘制。整个绘图系统基于QPainter,QPainterDevice和QPaintEngine三个类。
QPainter用来执行绘制的操作;QPaintDevice是一个二维空间的抽象,这个二维空间可以由QPainter在上面进行绘制;QPaintEngine提供了画笔painter在不同的设备上进行绘制的统一的接口。
它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,例如:点、线、矩形、弧形、饼状图、多边形、贝塞尔弧线等。
此外,QPainter 也支持一些高级特性,例如反走样(针对文字和图形边缘)、像素混合、渐变填充和矢量路径等,QPainter 也支持线性变换,例如平移、旋转、缩放。
首先简单介绍一下坐标系统:QT中的窗口都有的默认的坐标原点(0,0),位于屏幕的左上角,X轴正方向是水平向右,Y轴正方向是竖直向下,相反为负。
x:窗口左上角x坐标
y:窗口左上角y坐标
width:窗口长度
height:窗口高度
一个绘图工具的使用步骤常为:(1)构造一个绘图工具(2)设置字体、画笔、画刷等等参数(3)绘图(4)销毁绘图工具
绘制的内容会以背景的形式出现在窗口中,线和轮廓都可以用画笔QPen进行绘制,画刷QBrush进行填充,字体可以使用QFont类定义。
大量的资料在QT提供的官方文档里有介绍,也可以直接看看。
我们先来看几个常见的图像,我用的是QT5.9.0,首先在头文件中加入
以及声明函数
1.绘制直线
2.绘制矩形
3.绘制椭圆
4.绘制扇形
坐标系变换是利用变换矩阵来进行的,我们可以利用QTransform类来设置变换矩阵,QPainter类提供了对坐标系的平移,缩放,旋转,扭曲等变换函数。
如利用translate()函数进行平移变换。其实就是改变坐标的中心。
利用scale()函数进行比例变换,实现放大缩小。(和css很像)
利用rotate()函数进行翻转变换。 注意和上图的区别
利用shear()函数就行扭曲变换。
坐标系的保存与恢复
绘图过程中可以先利用save()函数来保存坐标系现在的状态,然后进行变换操作,操作完之后,再用restore()函数将以前的坐标系状态恢复。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/20337.html