绘图设备和支持后端
创建绘图设备
QPaintDevice 类是可绘制对象的基类,即 QPainter 可在任意 QPaintDevice 子类上绘制。 QPaintDevice 的绘制功能通过 QWidget、QImage、QPixmap、QPicture、QPrinter 和 QOpenGLPaintDevice 等来实现。
小部件 QWidget 类是 Qt Widgets 模块中用户界面元素的基类。它从窗口系统接收鼠标、键盘和其他事件,并在屏幕上绘制其本身的表现。 |
图像 QImage 类提供了一个硬件独立的图像表示,它经过设计和优化,用于输入输出操作,以及直接访问和操作像素。 QImage 支持多种图像格式,包括单色、8 位、32 位和透明混合图像。 使用 QImage 作为绘图设备的一个优点是,可以以平台无关的方式保证任何绘图操作的像素精确度。另一个好处是,可以在其他线程上执行绘图操作,而不是当前的用户界面线程。 |
像素映射 QPixmap 类是一种脱屏图像表示,它设计和优化了在屏幕上显示图像。与 QImage 不同,像素映射中的像素数据是内部的,由底层窗口系统管理,即像素只能通过 QPainter 函数或转换为 QImage 来访问。 为优化 使用 QPixmap 的绘图,Qt 提供了 QPixmapCache 类,它可以用来存储重复利用的临时像素映射,而不必超出缓存限制而产生额外的存储空间。 Qt 还提供了继承自 QPixmap 的 convenience 类 QBitmap。 QBitmap 保证单色(1 位深度)像素映射,主要用于创建定制的 QCursor 和 QBrush 对象,构建 QRegion 对象。 |
OpenGL 绘图设备 如前所述,Qt 提供了易于在 Qt 应用程序中使用 OpenGL 的类。例如,QOpenGLPaintDevice 允许通过 QPainter 使用 OpenGL API 进行渲染。 |
图片 QPicture 类是一个绘图设备,记录和重放 QPainter 命令。图像将绘图命令序列化为一个平台无关的格式,并写入 IO 设备。QPicture 也具有分辨率无关性,即一个 QPicture 可以在不同的设备上(例如 svg、pdf、ps、打印机、屏幕)上显示相同。 Qt 提供了 QPicture::load() 和 QPicture::save() 函数,以及用于加载和保存图片的字节流操作符。 |
自定义后端 可以通过从 QPaintDevice 类派生并重新实现虚拟函数 QPaintDevice::paintEngine() 来实现对新后端的支持,以告诉 QPainter 应该使用哪个绘图引擎来绘制这个特定的设备。要实际在设备上绘制,这个绘图引擎必须是从 QPaintEngine 类派生出的自定义绘图引擎。 |
© 2024Qt公司有限公司。其中包括的文档贡献的版权属于相应的所有者。本处的文档是根据自由软件基金会发布的 GNU自由文档许可协议版本1.3 的条款进行许可。Qt和相应的标志是Qt公司在芬兰及其它全球国家的商标。所有其他商标属于其相应的所有者。