qt-渲染原理( 五 )


类为提供了如何在指定绘图设备上(译者注:一般为的派生)绘制的一些抽象的方法 。
Qt为不同的后端提供了一些预设实现的
译者注:提供一个更加好理解的说法 。的Qt实现一般默认调用的是的方法 。
现在主要提供的是Qt自带的光栅化引擎(),Qt在他所有支持的平台上 , 提供了一个功能完备的光栅化引擎 。
在, X11 和 macOS平台上 , Qt自带的光栅化引擎都是这个基础类的默认的绘制方法的提供者 , 亦或是的绘制方法的提供者 。当然有一些特殊的绘制设备的绘制引擎不提供对应的绘制方法 , 这时候就会调用默认的光栅化引擎 。
当然 , 我们也为(可通过访问)跟打印(允许在对象上绘制 , 用于生成pdf之类的)也提供了对应的的实现 。
译者注: , , 三个是相辅相成的 。
如果你想使用绘制自定义的后端(译者注:这里可以理解为) 。你可以继承 , 并实现其所有的虚函数 。然后子类化并且实现它的纯虚成员函数(::()) 。
由创建 , 并维护其生命周期 。
另请参见 , ::()和Paint
绘画设备是可以使用绘制的二维空间的抽象 。它的默认坐标系的原点位于左上角 。X向右增加 , Y向下增加 。单位是一个像素 。
类是可绘制对象的基类 , 即可以在任何子类上绘制 。的绘图功能由、、、、和 实现 。
类是Qt 模块中用户界面元素的基类 。它从窗口系统接收鼠标、键盘和其他事件 , 并在屏幕上绘制自己的表示 。
类提供了一种独立于硬件的图像表示 , 它针对 I/O 以及直接像素访问和操作而设计和优化 。支持多种图像格式 , 包括单色、8 位、32 位和 alpha 混合图像 。
使用作为绘图设备的一个优点是可以以独立于平台的方式保证任何绘图操作的像素准确性 。另一个好处是可以在当前 GUI 线程之外的另一个线程中执行绘制 。

qt-渲染原理

文章插图
类是一种离屏图像表示 , 其设计和优化用于在屏幕上显示图像 。与不同 , 像素图中的像素数据是内部的 , 由底层窗口系统管理 , 即只能通过函数或将转换为来访问像素 。
为了使用优化绘图 , Qt 提供了类 , 该类可用于存储生成成本高昂的临时像素图 , 而无需使用超过缓存限制的存储空间 。
Qt 还提供便利类 , 继承 。保证单色(1 位深度)像素图 , 主要用于创建自定义和对象 , 构造对象 。
绘制设备
如前所述 , Qt 提供的类使得在 Qt 应用程序中使用变得容易 。例如 , 启用API 以使用进行渲染 。
类是记录和重放命令的绘图设备 。图片以独立于平台的格式将画家命令序列化到 IO 设备 。也与分辨率无关 , 即可以显示在看起来相同的不同设备(例如 svg、pdf、ps、打印机和屏幕)上 。
自定义后端
可以通过从类派生并重新实现虚拟:: () 函数来告诉应该使用哪个绘图引擎在此特定设备上绘制来实现对新后端的支持 。为了真正能够在设备上绘图 , 此绘制引擎必须是通过派生自类创建的自定义绘制引擎 。
提供了高度优化的功能来完成大多数绘图 GUI 程序所需的工作 。它可以绘制从简单的线条到复杂的形状(如馅饼和弦)的所有内容 。它还可以绘制对齐的文本和像素图 。通常 , 它在“自然”坐标系中绘制 , 但它也可以进行视图和世界变换 。可以对任何继承类的对象进行操作 。