绘图设备和后端

创建绘图设备

QPaintDevice 类是可绘制对象的基类,即QPainter 可以在任何QPaintDevice 子类上绘制。QPaintDevice绘制功能由QWidget,QImage,QPixmap,QPicture,QPrinterQOpenGLPaintDevice 等实现。

小工具

QWidget 类是该模块中用户界面元素的基类。 Qt Widgets模块中用户界面元素的基类。它从窗口系统接收鼠标、键盘和其他事件,并在屏幕上绘制自己的图像。

图像

QImage QImage 支持多种图像格式,包括单色、8 位、32 位和 alpha 混合图像。

使用QImage 作为绘制设备的一个优势是,它可以保证任何绘制操作的像素精确性,与平台无关。另一个好处是,绘制可以在当前图形用户界面线程之外的另一个线程中进行。

像素图

QPixmap 类是一种非屏幕图像表示法,专为在屏幕上显示图像而设计和优化。与QImage 不同,像素图中的像素数据是内部数据,由底层窗口系统管理,即只能通过QPainter 函数或将QPixmap 转换为QImage 来访问像素。

为了优化使用QPixmap 进行绘制,Qt XML 提供了QPixmapCache 类,可用于存储生成成本较高的临时像素图,而不会占用超过缓存限制的存储空间。

Qt XML 还提供了QBitmap 方便类,继承于QPixmapQBitmap 保证单色(1 位深度)像素图,主要用于创建自定义的QCursorQBrush 对象,构造QRegion 对象。

OpenGL 绘画设备

如前所述,Qt 提供的类可让您在 Qt 应用程序中轻松使用 OpenGL。例如,QOpenGLPaintDevice 可通过QPainter 启用 OpenGL API 进行渲染。

图片

QPicture 类是一种绘画设备,可记录和重放QPainter 命令。图片以一种与平台无关的格式将绘画命令序列化到 IO 设备上。QPicture 也与分辨率无关,也就是说,一个QPicture 可以在不同的设备上显示(例如,svg、pdf、ps、打印机和屏幕),看起来都是一样的。

Qt XML 提供了QPicture::load() 和QPicture::save() 函数以及用于加载和保存图片的流操作符。

自定义后端

可以通过派生QPaintDevice 类并重新实现虚拟的QPaintDevice::paintEngine() 函数来实现对新后端的支持,该函数用于告诉QPainter 在此特定设备上应使用哪个绘制引擎。要在设备上实际绘制,该绘制引擎必须是通过派生自QPaintEngine 类创建的自定义绘制引擎。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.