QPen是画笔,用来绘制图形的轮廓线,以及定义轮廓线的颜色、样式和属性;
QBrush是画刷,用来填充封闭图形,以及定义填充的颜色、样式和属性;
QPainter是画家,他要使用画笔QPen和画刷QBrush,在画布(QPaintDevice)上画文字、图形、图片等。
可以充当画布(QPaintDevice)的类(其子类)有:QWidget,QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, and QPixmap。
这么多类型的画布中,QWidget和QPixmap最常用。
一、描述
1、QPainter 类在小部件和其他绘制设备上执行低级绘制。
2、QPainter 提供了高度优化的功能来完成大多数图形GUI程序所需的工作。它可以画从简单的线条到复杂的形状。它还可以绘制对齐的文本和像素图。QPainter 可以对继承 QPaintDevice 类的任何对象进行操作。
3、QPainter 与 QPaintDevice 和 QPaintEngine 类一起构成了Qt绘制系统的基础:
- QPainter 是用于执行绘图操作的类。
- QPaintDevice 表示可以使用 QPainter 在其上绘制的设备。
- QPaintEngine 提供了一个接口,QPainter 可以使用这个接口来绘制不同类型的设备。
二、实用成员函数
1.QPainter(QPaintDevice *device)
构造一个立即开始绘制绘制设备的QPainter对象。此构造函数对于临时的绘制者很方便,并且应该只使用一次。构造函数自动调用 begin(),析构函数、自动调用 end()。
2.bool begin(QPaintDevice *device)
开始绘制绘画设备,如果成功则返回true,否则返回false。
3.void drawImage(const QRectF &target, const QImage &image, const QRectF &source, Qt::ImageConversionFlags flags = Qt::AutoColor)
将给定图像的矩形部分(参数3)源绘制到绘制设备中的目标矩形(参数1)中。如果图像和矩形尺寸不相同,则将图像缩放以适合矩形。
QPainter painter(this);
QImage img(":/D:/eee.jpg");
QRectF r{40,40,100,200};
painter.drawImage(r,img);
4.void drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
将给定像素图的矩形部分源绘制到绘画设备中的给定目标中。如果像素图和矩形大小不相同,则将像素图缩放为适合矩形。
QPainter painter(this);
QPixmap img(":/D:/eee.jpg");
QRectF r{40,40,100,200};
painter.drawPixmap(r,img,QRectF(30,30,200,400));
5.void drawPixmap(const QPointF &point, const QPixmap &pixmap, const QRectF &source)
在参数1的点处开始绘制参数3指定的图片区域,不会缩放。
QPainter painter(this);
QPixmap img(":/D:/eee.jpg");
painter.drawPixmap(QPointF(40,40),img,QRectF(30,30,200,400));
6.void drawPixmap(const QPointF &point, const QPixmap &pixmap)
在给定点开始绘制图片,不会缩放。
7.void drawPixmap(const QRect &rectangle, const QPixmap &pixmap)
在矩形区域绘制图片,会缩放。
8.bool end()
结束绘画。 释放绘画时使用的所有资源。
参考文章:QPainter详解-CSDN博客