文章目录

  • 详述
  • 公共类型
    • enum DirtyFlag
    • enum PaintEngineFeature
    • enum PolygonDrawMode
    • enum Type
  • 公共函数

QPaintEngine 类

QPaintEngine类提供了有关QPainter如何绘制到给定平台上给定设备的抽象定义。

Header #include < QPaintEngine >
qmake QT += gui
Inherited By

详述

Qt为我们支持的不同painter后端提供了QPaintEngine的几种预制实现。提供的主要绘制引擎是光栅绘制引擎,它包含一个软件光栅化程序,该光栅化程序支持所有受支持平台上的全部功能集。这是例如在基于QWidget的类上绘画的默认设置。在Windows,X11和macOS上,它是QImage绘画的后端,并且用作不支持某些功能的绘画引擎的后备。此外,我们为OpenGL(可通过QOpenGLWidget访问)和打印(允许使用QPainter绘制QPrinter对象)提供QPaintEngine实现。

如果要使用QPainter绘制到另一后端,则必须继承QPaintEngine的子类并重新实现其所有虚拟功能。然后,通过子类化QPaintDevice并重新实现虚拟函数QPaintDevice :: paintEngine() ,可以使用QPaintEngine实现。

QPaintEngine由创建它的QPaintDevice创建并拥有。

另请参见QPainter,QPaintDevice :: paintEngine() 和Paint System。

公共类型

enum DirtyFlag

flags DirtyFlags

Constant Value Description
DirtyPen 0x0001 笔很脏,需要更新。
DirtyBrush 0x0002 刷子很脏,需要更新。
DirtyBrushOrigin 0x0004 笔刷原点很脏,需要更新。
DirtyFont 0x0008 字体变脏,需要更新。
DirtyBackground 0x0010 背景很脏,需要更新。
DirtyBackgroundMode 0x0020 后台模式很脏,需要更新。
DirtyTransform 0x0040 转换很脏,需要更新。
DirtyClipRegion 0x0080 剪辑区域很脏,需要更新。
DirtyClipPath 0x0100 剪辑路径很脏,需要更新。
DirtyHints 0x0200 渲染提示很脏,需要更新。
DirtyCompositionMode 0x0400 合成模式很脏,需要更新。
DirtyClipEnabled 0x0800 是否启用裁剪是肮脏的,需要更新。
DirtyOpacity 0x1000 恒定的不透明度已更改,需要作为QPaintEngine :: updateState() 中状态更改的一部分进行更新。
AllDirty 0xffff 内部使用的方便枚举。

QPainter使用这些类型通过QPaintEngine :: updateState() 触发QPaintEngine中各种状态的延迟更新。

绘制引擎必须更新每个脏状态。

enum PaintEngineFeature

flags PaintEngineFeatures

该枚举用于描述绘画引擎具有的功能。 如果引擎不支持某个功能,则QPainter将尽最大努力通过其他方式来仿真该功能,并将具有alpha混合效果的QImage传递给引擎,并提供仿真结果。 某些功能无法仿真:AlphaBlend和PorterDuff。

Constant Value Description
AlphaBlend 0x00000080 引擎可以alpha混合基元。
Antialiasing 0x00000400 引擎可以使用抗锯齿来改善渲染图元的外观。
BlendModes 0x00008000 引擎支持混合模式。
BrushStroke 0x00000800 引擎支持包含笔刷作为填充的绘图笔触,而不仅仅是纯色(例如,宽度2的虚线渐变线)。
ConicalGradientFill 0x00000040 引擎支持圆锥形渐变填充。
ConstantOpacity 0x00001000 该引擎支持QPainter :: setOpacity()提供的功能。
LinearGradientFill 0x00000010 引擎支持线性渐变填充。
MaskedBrush 0x00002000 该引擎能够渲染具有带有Alpha通道或蒙版的纹理的笔刷。
ObjectBoundingModeGradients 0x00010000 该引擎对坐标模式为QGradient :: ObjectBoundingMode的渐变具有本地支持。否则,如果支持QPaintEngine :: PatternTransform,则将对象边界模式渐变转换为具有坐标模式QGradient :: LogicalMode和用于坐标映射的画笔变换的渐变。
PainterPaths 0x00000200 引擎具有路径支持。
PaintOutsidePaintEvent 0x20000000 该引擎能够在绘画事件之外进行绘画。
PatternBrush 0x00000008 引擎能够使用Qt :: BrushStyle中指定的画笔图案渲染画笔。
PatternTransform 0x00000002 该引擎支持转换画笔图案。
PerspectiveTransform 0x00004000 该引擎支持对基元执行透视转换。
PixmapTransform 0x00000004 该引擎可以变换像素图,包括旋转和剪切。
PorterDuff 0x00000100 该引擎支持Porter-Duff操作
PrimitiveTransform 0x00000001 该引擎支持转换绘图图元。
RadialGradientFill 0x00000020 引擎支持径向渐变填充。
RasterOpModes 0x00020000 引擎支持按位栅格操作。
AllFeatures 0xffffffff 以上所有功能。此枚举值通常用作位掩码。

enum PolygonDrawMode

Constant Value Description
OddEvenMode 0 多边形应使用OddEven填充规则绘制。
WindingMode 1 多边形应使用绕线填充规则绘制。
ConvexMode 2 多边形是凸多边形,可以使用可用的专用算法进行绘制。
PolylineMode 3 仅应绘制多边形的轮廓。

enum Type

Constant Value Description
X11 0
Windows 1
QuickDraw 2 macOS的QuickDraw
CoreGraphics 3 macOS的Quartz2D(CoreGraphics)
MacPrinter 4
QWindowSystem 5 嵌入式Linux的Qt
PostScript 6 (不再支持)
OpenGL 7
Picture 8 QPicture格式
SVG 9 可伸缩矢量图形XML格式
Raster 10
Direct3D 11 仅Windows,基于Direct3D的引擎
Pdf 12 便携式文件格式
OpenVG 13
OpenGL2 14
PaintBuffer 15
Blitter 16
Direct2D 17 仅Windows,基于Direct2D的引擎
User 50 第一用户类型ID
MaxUser 100 上次用户类型ID

公共函数

  1. QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
  2. virtual ~QPaintEngine()
  3. virtual bool begin(QPaintDevice *pdev) = 0
  4. virtual bool end() = 0
  5. virtual void drawEllipse(…)
  6. virtual void drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
  7. virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0
  8. virtual void drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
  9. virtual void drawLines(…)
  10. virtual void drawPath(const QPainterPath &path)
  11. virtual void drawPoints(…)
  12. virtual void drawPolygon(…)
  13. virtual void drawRects(…)
  14. virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
  15. bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const
  16. bool isActive() const
  17. void setActive(bool state)
  18. virtual void updateState(const QPaintEngineState &state) = 0
  19. QPaintDevice * paintDevice() const
  20. QPainter * painter() const
  21. virtual QPaintEngine::Type type() const = 0

绘画系统(05):【类】QPaintEngine[官翻]相关推荐

  1. QSettings 类【官翻】

    文章目录 详述 基本用法 QVariant和GUI类型 Section 和 Key 的语法 后备机制 恢复GUI应用程序的状态 同时从多个线程或进程访问设置 特定于平台的说明 应用程序设置的存储位置 ...

  2. QFileInfo 类【官翻】

    文章目录 详述 性能问题 公共函数 创建及析构 目录 路径.文件名及后缀 时间信息 缓存 属性 类型 访问权限 比较 静态公用函数 相关的非成员 QFileInfo 类 QFileInfo类提供与系统 ...

  3. QFileDevice 类【官翻】

    文章目录 一.详述 二.公共类型 三.公共函数 四.重新实现的公共函数 五.重新实现受保护的函数 QFileDevice 类 QFileDevice类提供用于读取和写入打开文件的接口. Header: ...

  4. QStorageInfo 类【官翻】

    文章目录 详述 公共函数 静态公共函数 相关非成员 QStorageInfo 类 提供有关当前安装的存储和驱动器的信息. Header: #include < QStorageInfo > ...

  5. QFile 类【官翻】

    文章目录 详述 直接读取文件 使用流读取文件 信号 平台特定问题 公共类型 公共函数 重新实现的公共函数 静态公用函数 QFile 类 QFile类提供用于读取和写入文件的接口. Header: #i ...

  6. Qt 线程(02):线程类【官翻】

    线程类 类名 简介 Concurrent Filter and Filter-Reduce Concurrent Map and Map-Reduce Concurrent Run QAtomicIn ...

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

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

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

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

  9. 绘画系统(02):【纲】Paint Devices and Backends[官翻]

    绘画设备和后端 Paint Devices and Backends 创建绘画设备 ​ QPaintDevice类是可以绘制的对象的基类,即QPainter可以在任何QPaintDevice子类上绘制 ...

最新文章

  1. 分库分表架构实践(文末送书)
  2. java foreach 删除_为什么java不要在foreach循环里进行元素的remove/add操作
  3. miui 8.5 android,小米MIUI 8.5稳定版更新来了:直达服务功能秒开应用
  4. 算法学习之路|住房空置率
  5. 网易云信新增用户、IM、实时音视频多维度统计功能
  6. SQL Server HA - 数据库镜像2 (Mirroring)(1418错误解决)
  7. python 新闻摘要_每日新闻摘要:Microsoft内部禁止应用程序,这样就可以了
  8. 你是否已经忘了Serlvet是什么?
  9. python打开一个本地目录文件路径
  10. dataguard 下主备 online redo 与 standby redo log resize 重建
  11. abd.exe 需要下java吗_abd.exe
  12. 如果你用GitHub,可以这样提高效率
  13. 优先队列 STL (转)
  14. 项目过程管理(八)延期和需求变更
  15. 局域网联机_红警如何局域网联机?详细联机教程,方法特别简单
  16. Spring Boot 2.1.6.RELEASE embed tomcat启动过程
  17. imx6ul gpio中断接收(代码)
  18. C语言程序设计博客作业02
  19. Qt编写的项目作品11-带频谱的音乐播放器
  20. android遥控器管理,Android 遥控器适配

热门文章

  1. nginx负载均衡测试实例
  2. canvas画图被放大且模糊
  3. 使用中通快递开发平台
  4. 字节跳动 测试开发实习生 面经
  5. 【NDN VANET】Rapid Traffic Information Dissemination Using Named Data 学习笔记
  6. java获取上传文件路径_java上传文件获取跟目录的办法
  7. iPhone 12频爆“雷”,终究还是“13香”?
  8. git删除与恢复错误删除、修改文件
  9. oracle授权问题
  10. oracle 中用户 授权,Oracle grant用户授权