QPainter详解

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博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值