绘画系统(05):【类】QPaintEngine[官翻]
文章目录
- 详述
- 公共类型
- 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的引擎 |
12 | 便携式文件格式 | |
OpenVG | 13 | |
OpenGL2 | 14 | |
PaintBuffer | 15 | |
Blitter | 16 | |
Direct2D | 17 | 仅Windows,基于Direct2D的引擎 |
User | 50 | 第一用户类型ID |
MaxUser | 100 | 上次用户类型ID |
公共函数
- QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
- virtual ~QPaintEngine()
- virtual bool begin(QPaintDevice *pdev) = 0
- virtual bool end() = 0
- virtual void drawEllipse(…)
- virtual void drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
- virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0
- virtual void drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
- virtual void drawLines(…)
- virtual void drawPath(const QPainterPath &path)
- virtual void drawPoints(…)
- virtual void drawPolygon(…)
- virtual void drawRects(…)
- virtual void drawTextItem(const QPointF &p, const QTextItem &textItem)
- bool hasFeature(QPaintEngine::PaintEngineFeatures feature) const
- bool isActive() const
- void setActive(bool state)
- virtual void updateState(const QPaintEngineState &state) = 0
- QPaintDevice * paintDevice() const
- QPainter * painter() const
- virtual QPaintEngine::Type type() const = 0
绘画系统(05):【类】QPaintEngine[官翻]相关推荐
- QSettings 类【官翻】
文章目录 详述 基本用法 QVariant和GUI类型 Section 和 Key 的语法 后备机制 恢复GUI应用程序的状态 同时从多个线程或进程访问设置 特定于平台的说明 应用程序设置的存储位置 ...
- QFileInfo 类【官翻】
文章目录 详述 性能问题 公共函数 创建及析构 目录 路径.文件名及后缀 时间信息 缓存 属性 类型 访问权限 比较 静态公用函数 相关的非成员 QFileInfo 类 QFileInfo类提供与系统 ...
- QFileDevice 类【官翻】
文章目录 一.详述 二.公共类型 三.公共函数 四.重新实现的公共函数 五.重新实现受保护的函数 QFileDevice 类 QFileDevice类提供用于读取和写入打开文件的接口. Header: ...
- QStorageInfo 类【官翻】
文章目录 详述 公共函数 静态公共函数 相关非成员 QStorageInfo 类 提供有关当前安装的存储和驱动器的信息. Header: #include < QStorageInfo > ...
- QFile 类【官翻】
文章目录 详述 直接读取文件 使用流读取文件 信号 平台特定问题 公共类型 公共函数 重新实现的公共函数 静态公用函数 QFile 类 QFile类提供用于读取和写入文件的接口. Header: #i ...
- Qt 线程(02):线程类【官翻】
线程类 类名 简介 Concurrent Filter and Filter-Reduce Concurrent Map and Map-Reduce Concurrent Run QAtomicIn ...
- 绘画系统(03):【类】QPainter[官翻]
文章目录 详述 Settings Drawing 绘制Pixmaps和Images 绘制高分辨率的Pixmaps和Images 渲染质量 坐标转换 剪切 组合方式 局限性 Performance 公共 ...
- 绘画系统(04):【类】QPaintDevice[官翻]
文章目录 详述 公共类型 enum PaintDeviceMetric 公共函数 受保护的函数 QPaintDevice 类 QPaintDevice类是可以用QPainter绘制对象的基类 Head ...
- 绘画系统(02):【纲】Paint Devices and Backends[官翻]
绘画设备和后端 Paint Devices and Backends 创建绘画设备 QPaintDevice类是可以绘制的对象的基类,即QPainter可以在任何QPaintDevice子类上绘制 ...
最新文章
- 分库分表架构实践(文末送书)
- java foreach 删除_为什么java不要在foreach循环里进行元素的remove/add操作
- miui 8.5 android,小米MIUI 8.5稳定版更新来了:直达服务功能秒开应用
- 算法学习之路|住房空置率
- 网易云信新增用户、IM、实时音视频多维度统计功能
- SQL Server HA - 数据库镜像2 (Mirroring)(1418错误解决)
- python 新闻摘要_每日新闻摘要:Microsoft内部禁止应用程序,这样就可以了
- 你是否已经忘了Serlvet是什么?
- python打开一个本地目录文件路径
- dataguard 下主备 online redo 与 standby redo log resize 重建
- abd.exe 需要下java吗_abd.exe
- 如果你用GitHub,可以这样提高效率
- 优先队列 STL (转)
- 项目过程管理(八)延期和需求变更
- 局域网联机_红警如何局域网联机?详细联机教程,方法特别简单
- Spring Boot 2.1.6.RELEASE embed tomcat启动过程
- imx6ul gpio中断接收(代码)
- C语言程序设计博客作业02
- Qt编写的项目作品11-带频谱的音乐播放器
- android遥控器管理,Android 遥控器适配