Day03 (上)_Qt绘图和绘图设备

一、QPainter

 

QT的绘图系统基于QPainter、QPainterDeive和QPainterEngine三个类,Qpainter可以视为画家,包含用来执行的操作的函数,QpainterDevice可以视为画板,是一个二维空间的抽象,允许QPainter在上面绘制,即为QPainter的工作空间。QpainterEngine提供了画笔Painter在不同的二维空间上的操作接口。

Qt的绘图系统实际上是使用QPainter在不同的QpainterDevice上进行绘制,他们之间使用QpainterEngine进行中间通信。

以在QpainterDevice上绘制背景图为例,在栈上定义一个QPainter对象,指定QPainter类的操作窗口为界面:

QPainter接收一个QpainterDevice指针作为参数。

程序实现中,首先定义一个画家QPainter,然后指定画家的操作空间为this,即当前窗口,画家执行的操作为绘图,所以使用p.drawPixmap()函数,前两个参数为图像的起始位置,接下来的两个参数调用width、height函数调用当前窗口的大小,最后一个参数为图像的地址。

 

运行结果为:

 

当QPainter想在绘图空间上划线、绘制图形时,需要再定义一个一个画笔,可以设置画笔的宽度、线条类型、画笔颜色等属性。在画笔属性设置完毕后将画笔移交给QPainter进行绘制,顺序反了的话不起作用。

 

运行结果为:

 

对于区域性绘图,可以使用画刷操作,通过设置画刷的颜色和风格可以可以设置区域性显示样式:

 

运行结果为:

 

可以看到一个button按钮,可以用来做刷新,比如一张图片,每次按键按下,图片位置刷新一次,刷新使用的函数为update()函数,在按键的槽函数中定义,每次按键点击横坐标自加20,然后刷新位置。

二、 绘图设备

绘图设备指的是继承于QpainterDevice的子类,该类一共有四种,分别问QPixmap、QBitmap、QImage、QPicture四种。

四种类型的区别

(1)、QPixmap:专门为图像在屏幕上显示做了优化

(2)、QBitmap:是QPixmap的一个子类,色深限定为1,只能显示黑白

(3)、QImage:专门为图像的像素级别操作访问做了优化

(4)、QPicture:可以记录和重现QPainter的各种操作

2.1、QPixmap:

见(一)。

2.2、QBitmap:

QBitmap继承于QPixmap,具有Qpixmap的所有特性,但是仅提供单色图像,显示只有黑白两色的图像数据,由于色深小,所以只占用很小的存储空间。

以一个同一文件在QPixmap和QBitmap下的不同表现说明:

代码中使用的新显示方式为:先定义一个相应类型的变量,然后将图像地址通过load()函数进行加载

 

运行结果:

 

2.3、QImage:

QImage主要是为图像I/O、图片访问和像素修改设计的,独立于硬件平台,可以在线程中进行绘制

 

运行结果:

 

2.4、QPicture:

Qpicture是一个可以记录和重现QPainter命令的绘图设备,Qpicture将QPainter的命令序列化到一个IO设备,保存为一个平台的独立文件格式,这种格式是二进制的,与平台无关。

 

文件显示:

 

猜你喜欢

转载自www.cnblogs.com/luxinshuo/p/12237638.html