绘画设备和后端

Paint Devices and Backends

创建绘画设备

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

  • 小部件(Widget)
    ​QWidget类是Qt Widgets模块中用户界面元素的基类。 它从窗口系统接收鼠标,键盘和其他事件,并在屏幕上绘制其自身的表示。
  • 图片(Image)
    ​ QImage类提供了独立于硬件的图像表示,该图像表示针对I / O以及直接像素访问和操纵进行了设计和优化。 QImage支持多种图像格式,包括单色,8位,32位和alpha混合图像。
    ​ 使用QImage作为绘制设备的一个优点是可以以与平台无关的方式保证任何绘制操作的像素准确性。 另一个好处是绘画可以在当前GUI线程之外的另一个线程中执行。
  • 像素图(Pixmap)
    QPixmap类是一种屏幕外图像表示形式,其设计和优化用于在屏幕上显示图像。 与QImage不同,像素图中的像素数据是内部的,并由基础窗口系统管理,即像素只能通过QPainter函数或将QPixmap转换为QImage来访问。
    为了使用QPixmap优化绘图,Qt提供了QPixmapCache类,该类可用于存储临时像素图,这些像素图的生成成本很高,并且不使用超出缓存限制的存储空间。
    Qt还提供了QBitmap便利类,继承了QPixmap。 QBitmap保证单色(1位深度)像素图,主要用于创建自定义QCursor和QBrush对象,构造QRegion对象。
  • OpenGL画图设备
    如前所述,Qt提供的类使在Qt应用程序中使用OpenGL变得容易。 例如,QOpenGLPaintDevice启用OpenGL API以使用QPainter进行渲染。
  • 图片(Picture)
    QPicture类是一种绘画设备,可以记录和重放QPainter命令。 图片以平台无关的格式将Painter命令序列化到IO设备。 QPicture也是与分辨率无关的,即QPicture可以在看起来相同的不同设备(例如svg,pdf,ps,打印机和屏幕)上显示。
    Qt提供了QPicture :: load() 和QPicture :: save() 函数,以及用于加载和保存图片的流运算符。
  • 自定义后端
    对新后端的支持可以通过从QPaintDevice类派生并重新实现虚拟QPaintDevice :: paintEngine() 函数来实现,以告知QPainter应该使用哪个绘画引擎在此特定设备上进行绘制。 为了真正能够在设备上绘画,此绘画引擎必须是通过从QPaintEngine类派生而创建的自定义绘画引擎。

绘画系统(02):【纲】Paint Devices and Backends[官翻]相关推荐

  1. 绘画系统(03):【类】QPainter[官翻]

    文章目录 详述 Settings Drawing 绘制Pixmaps和Images 绘制高分辨率的Pixmaps和Images 渲染质量 坐标转换 剪切 组合方式 局限性 Performance 公共 ...

  2. 绘画系统(04):【类】QPaintDevice[官翻]

    文章目录 详述 公共类型 enum PaintDeviceMetric 公共函数 受保护的函数 QPaintDevice 类 QPaintDevice类是可以用QPainter绘制对象的基类 Head ...

  3. 绘画系统(05):【类】QPaintEngine[官翻]

    文章目录 详述 公共类型 enum DirtyFlag enum PaintEngineFeature enum PolygonDrawMode enum Type 公共函数 QPaintEngine ...

  4. 绘画系统(14):【类】QRegion[官翻]

    文章目录 详述 创建和使用区域 公共类型 enum RegionType typedef const_iterator typedef const_reverse_iterator 公共函数 构造析构 ...

  5. 绘画系统(06):【类】QPaintPath[官翻]

    文章目录 1. QPainterPath 1.2 公共类型 1.3 公共函数 1.4. 详述 1.4.2 组成一个QPainterPath 1.4.3 QPainterPath信息 1.4.4 QPa ...

  6. 基本Widgets(02):【类】QWidget [官翻]

    文章目录 详细说明 顶层和子级小部件 组合小部件 自定义小部件和绘画 大小提示和大小策略 事件 函数和属性组 小部件样式表 透明度和双缓冲 创建半透明窗口 本地小部件与外来部件 公共类型 enum R ...

  7. 图形视图(02):【类】QGraphicsScene [官翻]

    文章目录 详述 事件处理和传播 公共类型 enum ItemIndexMethod enum SceneLayer 属性 backgroundBrush: QBrush bspTreeDepth: i ...

  8. 外观和样式(02):【类】QColor [官翻]

    QColor Class QColor类提供基于RGB,HSV或CMYK值的颜色. Header #include < QColor > qmake QT += gui Inherits ...

  9. 绘画系统(01):【纲】Paint System[官翻]

    文章目录 主题 绘画相关的类 Paint System(绘画系统) Qt的绘画系统可以使用相同的API在屏幕和打印设备上绘画,并且主要基于QPainter,QPaintDevice 和 QPaintE ...

最新文章

  1. 成功解决mnist.py:110: dense_to_one_hot (from tensorflow.contrib.learn.python.learn.datasets.mnist) is de
  2. python读取pdf文档书签 bookmark_Python利用PyPDF2库获取PDF文件总页码实例
  3. 【Tensorflow】Tensorflow中的卷积函数(conv2d、slim.conv2d、depthwise_conv2d、conv2d_transpose)
  4. Java中重定向,转发深入理解 2021-04-26
  5. [转载] Python杂谈 | (6) numpy中array()和asarray()的区别
  6. 本博文记录需要解决的问题
  7. 帆软邮件STMP配置、发送测试及邮件发送失败日志排查
  8. Delphi7常用插件
  9. 开上帝视角,其实你也能
  10. apache roller_Apache Roller RC支持Java EE 6服务器,Alex Ruiz离开了Oracle
  11. 如何从PDF文件中提取几页为一个PDF文件?
  12. 数字电路:设计《三个开关控制一个灯的电路》
  13. bs 网站获取电子秤重量方案
  14. JS:中文输入法,日文输入法做最大位数Check的坑maxlength
  15. 0314-html img em i stong b标签应用
  16. GetDC 与 释放DC
  17. Access数据库 实现分页查询
  18. Zfile-轻量开源个人网盘【超简单部署】
  19. c++ 制作五子棋游戏
  20. 机器学习习题(11)

热门文章

  1. C++中cout<<后面加endl什么意思?
  2. 如何添加装饰螺纹线规格
  3. MATLAB 图像嵌入水印图像程序
  4. 【CAR笔记1】标定的标准——ASAP和ASAM
  5. Dynamics 365 窗体中设置可编辑的子网格
  6. 基于多视角照片的3D人脸重建
  7. 总结10个Python赚钱的接单平台 兼职月入5000+
  8. 微信访问时,提示:该地址为ip地址,请使用域名访问网站
  9. 用HTML5写ZZULI官网(八)
  10. 关于firefly-rk3288开发板编译uboot的问题