Qt学习之十六:Qt绘制系统简介

本文介绍了Qt的绘图系统,主要涉及QPainter、QPaintDevice和QPaintEngine三个核心类。QPainter用于绘制操作,QPaintDevice为二维绘制空间,QPaintEngine则提供不同设备上的绘制接口。通过QPainter与QPaintDevice之间的QPaintEngine通信,实现了跨设备的统一绘制。示例中展示了使用QPainter在QPaintDevice子类如QWidget上绘制直线、矩形和椭圆的顺序,以及它们的层次关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt 的绘图系统允许使用相同的 API 在屏幕和其它打印设备上进行绘制。整个绘图系统基于QPainter, QPainterDevice 和 QPaintEngine 三个类。
QPainter 用来执行绘制的操作; QPaintDevice 是一个二维空间的抽象,这个二维空间允许QPainter 在其上面进行绘制,也就是 QPainter 工作的空间; QPaintEngine 提供了画笔( QPainter)在不同的设备上进行绘制的统一的接口。 QPaintEngine 类应用于 QPainter 和
QPaintDevice 之间,通常对开发人员是透明的。除非你需要自定义一个设备,否则你是不需要关心 QPaintEngine 这个类的。我们可以把 QPainter 理解成画笔;把 QPaintDevice 理解成使用画笔的地方,比如纸张、屏幕等;而对于纸张、屏幕而言,肯定要使用不同的画笔绘制,为了统一使用一种画笔,我们设计了 QPaintEngine 类,这个类让不同的纸张、屏幕都能使用一种画笔。
下图给出了这三个类之间的层次结构(出自 Qt API 文档):
上面的示意图告诉我们, Qt 的绘图系统实际上是,使用 QPainter 在QPainterDevice 上进行绘制,它们之间使用 QPaintEngine 进行通讯(也就是翻译 QPainter 的指令)。

class PaintedWidget : public QWidget
{

  Q_OBJECT
public
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞翔的鲲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值