The QPaintEngine 类提供抽象定义为如何 QPainter 绘制到给定设备在给定平台。 更多...
| 头: | #include <QPaintEngine> | 
| qmake: | QT += gui | 
| enum | DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, ..., AllDirty } | 
| flags | DirtyFlags | 
| enum | PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ..., AllFeatures } | 
| flags | PaintEngineFeatures | 
| enum | PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode } | 
| enum | Type { X11, Windows, MacPrinter, CoreGraphics, ..., Direct2D } | 
| QPaintEngine (QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures()) | |
| virtual | ~QPaintEngine () | 
| virtual bool | begin (QPaintDevice * pdev ) = 0 | 
| virtual void | drawEllipse (const QRectF & rect ) | 
| virtual void | drawEllipse (const QRect & rect ) | 
| virtual void | drawImage (const QRectF & rectangle , const QImage & image , const QRectF & sr , Qt::ImageConversionFlags flags = Qt::AutoColor) | 
| virtual void | drawLines (const QLineF * lines , int lineCount ) | 
| virtual void | drawLines (const QLine * lines , int lineCount ) | 
| virtual void | drawPath (const QPainterPath & path ) | 
| virtual void | drawPixmap (const QRectF & r , const QPixmap & pm , const QRectF & sr ) = 0 | 
| virtual void | drawPoints (const QPointF * points , int pointCount ) | 
| virtual void | drawPoints (const QPoint * points , int pointCount ) | 
| virtual void | drawPolygon (const QPointF * points , int pointCount , QPaintEngine::PolygonDrawMode mode ) | 
| virtual void | drawPolygon (const QPoint * points , int pointCount , QPaintEngine::PolygonDrawMode mode ) | 
| virtual void | drawRects (const QRectF * rects , int rectCount ) | 
| virtual void | drawRects (const QRect * rects , int rectCount ) | 
| virtual void | drawTextItem (const QPointF & p , const QTextItem & textItem ) | 
| virtual void | drawTiledPixmap (const QRectF & rect , const QPixmap & pixmap , const QPointF & p ) | 
| virtual bool | end () = 0 | 
| bool | hasFeature (QPaintEngine::PaintEngineFeatures feature ) const | 
| bool | isActive () const | 
| QPaintDevice * | paintDevice () const | 
| QPainter * | painter () const | 
| void | setActive (bool state ) | 
| virtual QPaintEngine::Type | type () const = 0 | 
| virtual void | updateState (const QPaintEngineState & state ) = 0 | 
| uint | active | 
| QScopedPointer<QPaintEnginePrivate> | d_ptr | 
| uint | extended | 
| QPaintEngine::PaintEngineFeatures | gccaps | 
| uint | selfDestruct | 
| QPaintEngineState * | state | 
The QPaintEngine 类提供抽象定义为如何 QPainter 绘制到给定设备在给定平台。
Qt 提供了几种预制实现的 QPaintEngine 为我们支持的不同描绘器后端。提供的首要描绘引擎是光栅描绘引擎,包含支持所有支持平台中的完整特征集的软件光栅化器。描绘默认使用这在 QWidget -based classes in e.g. on Windows, X11 and macOS , it is the backend for painting on QImage 且它被用作不支持某些能力的描绘引擎的回退。此外,我们还提供 QPaintEngine 实现为 OpenGL (可访问透过 QGLWidget) 和打印 (允许使用 QPainter to draw on a QPrinter object).
若想要使用 QPainter 绘制到不同后端,必须子类 QPaintEngine 并重实现其所有虚函数。 QPaintEngine 实现然后就可用了通过子类化 QPaintDevice 并重实现虚函数 QPaintDevice::paintEngine ().
QPaintEngine 的创建和拥有是通过 QPaintDevice 创建它。
另请参阅 QPainter , QPaintDevice::paintEngine (),和 描绘系统 .
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QPaintEngine::DirtyPen
								 | 
0x0001
								 | 钢笔脏且需要更新。 | 
| 
QPaintEngine::DirtyBrush
								 | 
0x0002
								 | 笔刷脏且需要更新。 | 
| 
QPaintEngine::DirtyBrushOrigin
								 | 
0x0004
								 | 笔刷原点脏且需要更新。 | 
| 
QPaintEngine::DirtyFont
								 | 
0x0008
								 | 字体脏且需要更新。 | 
| 
QPaintEngine::DirtyBackground
								 | 
0x0010
								 | 背景脏且需要更新。 | 
| 
QPaintEngine::DirtyBackgroundMode
								 | 
0x0020
								 | 背景模式脏且需要更新。 | 
| 
QPaintEngine::DirtyTransform
								 | 
0x0040
								 | 变换脏且需要更新。 | 
| 
QPaintEngine::DirtyClipRegion
								 | 
0x0080
								 | 裁剪区域脏且需要更新。 | 
| 
QPaintEngine::DirtyClipPath
								 | 
0x0100
								 | 裁剪路径脏且需要更新。 | 
| 
QPaintEngine::DirtyHints
								 | 
0x0200
								 | 渲染提示脏且需要更新。 | 
| 
QPaintEngine::DirtyCompositionMode
								 | 
0x0400
								 | 合成模式脏且需要更新。 | 
| 
QPaintEngine::DirtyClipEnabled
								 | 
0x0800
								 | 是否启用裁剪脏且需要更新。 | 
| 
QPaintEngine::DirtyOpacity
								 | 
0x1000
								 | 常量不透明度已改变,且需要更新部分状态改变在 QPaintEngine::updateState (). | 
| 
QPaintEngine::AllDirty
								 | 
0xffff
								 | 内部使用的方便枚举。 | 
这些类型用于 QPainter 以触发各种状态的惰性更新在 QPaintEngine 使用 QPaintEngine::updateState ().
描绘引擎必须更新每脏点状态。
DirtyFlags 类型是 typedef 对于 QFlags <DirtyFlag>。它存储 DirtyFlag 值的 OR 组合。
此枚举用于描述描绘引擎拥有的特征 (或能力)。若特征不被引擎支持, QPainter 会尽最大努力透过其它手段来模拟该特征,并传递 Alpha 融合 QImage 给引擎采用模拟结果。某些特征无法模拟:AlphaBlend 和 PorterDuff。
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QPaintEngine::AlphaBlend
								 | 
0x00000080
								 | 引擎可以 Alpha 融合图元。 | 
| 
QPaintEngine::Antialiasing
								 | 
0x00000400
								 | 引擎可以使用抗锯齿以改进渲染图元的外观。 | 
| 
QPaintEngine::BlendModes
								 | 
0x00008000
								 | 引擎支持融合模式。 | 
| 
QPaintEngine::BrushStroke
								 | 
0x00000800
								 | 引擎支持包含如填充笔刷,不仅仅是纯色笔刷的绘制笔画 (如:宽度 2 的虚线渐变线条)。 | 
| 
QPaintEngine::ConicalGradientFill
								 | 
0x00000040
								 | 引擎支持锥形渐变填充。 | 
| 
QPaintEngine::ConstantOpacity
								 | 
0x00001000
								 | 引擎支持特征提供通过 QPainter::setOpacity (). | 
| 
QPaintEngine::LinearGradientFill
								 | 
0x00000010
								 | 引擎支持线性渐变填充。 | 
| 
QPaintEngine::MaskedBrush
								 | 
0x00002000
								 | 引擎能够渲染拥有具有 Alpha 通道 (或遮罩) 的纹理的笔刷。 | 
| 
QPaintEngine::ObjectBoundingModeGradients
								 | 
0x00010000
								 | The engine has native support for gradients with coordinate mode QGradient::ObjectBoundingMode . Otherwise, if QPaintEngine::PatternTransform is supported, object bounding mode gradients are converted to gradients with coordinate mode QGradient::LogicalMode and a brush transform for the coordinate mapping. | 
| 
QPaintEngine::PainterPaths
								 | 
0x00000200
								 | 引擎有路径支持。 | 
| 
QPaintEngine::PaintOutsidePaintEvent
								 | 
0x20000000
								 | The engine is capable of painting outside of paint events. | 
| 
QPaintEngine::PatternBrush
								 | 
0x00000008
								 | The engine is capable of rendering brushes with the brush patterns specified in Qt::BrushStyle . | 
| 
QPaintEngine::PatternTransform
								 | 
0x00000002
								 | The engine has support for transforming brush patterns. | 
| 
QPaintEngine::PerspectiveTransform
								 | 
0x00004000
								 | The engine has support for performing perspective transformations on primitives. | 
| 
QPaintEngine::PixmapTransform
								 | 
0x00000004
								 | The engine can transform pixmaps, including rotation and shearing. | 
| 
QPaintEngine::PorterDuff
								 | 
0x00000100
								 | The engine supports Porter-Duff operations | 
| 
QPaintEngine::PrimitiveTransform
								 | 
0x00000001
								 | The engine has support for transforming drawing primitives. | 
| 
QPaintEngine::RadialGradientFill
								 | 
0x00000020
								 | The engine supports radial gradient fills. | 
| 
QPaintEngine::RasterOpModes
								 | 
0x00020000
								 | The engine supports bitwise raster operations. | 
| 
QPaintEngine::AllFeatures
								 | 
0xffffffff
								 | All of the above features. This enum value is usually used as a bit mask. | 
PaintEngineFeatures 类型是 typedef 对于 QFlags <PaintEngineFeature>。它存储 PaintEngineFeature 值的 OR 组合。
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QPaintEngine::OddEvenMode
								 | 
0
								 | 应使用 OddEven (奇偶) 填充规则绘制多边形。 | 
| 
QPaintEngine::WindingMode
								 | 
1
								 | 应使用 Winding (卷绕) 填充规则绘制多边形。 | 
| 
QPaintEngine::ConvexMode
								 | 
2
								 | 多边形是凸多边形,且可以使用专用算法绘制若可用。 | 
| 
QPaintEngine::PolylineMode
								 | 
3
								 | 只应绘制多边形轮廓。 | 
| 常量 | 值 | 描述 | 
|---|---|---|
| 
QPaintEngine::X11
								 | 
0
								 | |
| 
QPaintEngine::Windows
								 | 
1
								 | |
| 
QPaintEngine::MacPrinter
								 | 
4
								 | |
| 
QPaintEngine::CoreGraphics
								 | 
3
								 | macOS 's Quartz2D (CoreGraphics) | 
| 
QPaintEngine::QuickDraw
								 | 
2
								 | macOS 's QuickDraw | 
| 
QPaintEngine::QWindowSystem
								 | 
5
								 | Qt for Embedded Linux | 
| 
QPaintEngine::PostScript
								 | 
6
								 | (不再支持) | 
| 
QPaintEngine::OpenGL
								 | 
7
								 | |
| 
QPaintEngine::Picture
								 | 
8
								 | QPicture format | 
| 
QPaintEngine::SVG
								 | 
9
								 | SVG (可伸缩向量图形) XML 格式 | 
| 
QPaintEngine::Raster
								 | 
10
								 | |
| 
QPaintEngine::Direct3D
								 | 
11
								 | 仅 Windows,基于 Direct3D 的引擎 | 
| 
QPaintEngine::Pdf
								 | 
12
								 | PDF (便携式文档格式) | 
| 
QPaintEngine::OpenVG
								 | 
13
								 | |
| 
QPaintEngine::User
								 | 
50
								 | 第一用户类型 ID | 
| 
QPaintEngine::MaxUser
								 | 
100
								 | 最后用户类型 ID | 
| 
QPaintEngine::OpenGL2
								 | 
14
								 | |
| 
QPaintEngine::PaintBuffer
								 | 
15
								 | |
| 
QPaintEngine::Blitter
								 | 
16
								 | |
| 
QPaintEngine::Direct2D
								 | 
17
								 | 仅 Windows,基于 Direct2D 的引擎 | 
创建描绘引擎采用的特征集指定通过 caps .
[虚拟]
						
						QPaintEngine::
						
							~QPaintEngine
						
						()
						
					销毁描绘引擎。
[pure virtual]
						
						
							bool
						
						QPaintEngine::
						
							begin
						
						(
						
							
								QPaintDevice
							
						
						*
						
							pdev
						
						)
						
					重实现此函数以初始化描绘引擎,当开始描绘在描绘设备 pdev 。返回 true 若成功初始化;否则返回 false。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawEllipse
						
						(const
						
							
								QRectF
							
						
						&
						
							rect
						
						)
						
					重实现此函数以绘制可以包含的最大椭圆,在矩形 rect .
默认实现调用 drawPolygon ().
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawEllipse
						
						(const
						
							
								QRect
							
						
						&
						
							rect
						
						)
						
					此函数的默认实现调用此函数的浮点版本
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawImage
						
						(const
						
							
								QRectF
							
						
						&
						
							rectangle
						
						, const
						
							
								QImage
							
						
						&
						
							image
						
						, const
						
							
								QRectF
							
						
						&
						
							sr
						
						,
						
							
								Qt::ImageConversionFlags
							
						
						
							flags
						
						= Qt::AutoColor)
						
					重实现此函数以绘制部分 image 指定通过 sr 矩形在给定 rectangle 使用给定转换标志 flags ,以将它转换成像素图。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawLines
						
						(const
						
							
								QLineF
							
						
						*
						
							lines
						
						,
						
							int
						
						
							lineCount
						
						)
						
					默认实现拆分线条列表在 lines into lineCount 单独调用 drawPath () 或 drawPolygon () 从属描绘引擎的特征集。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawLines
						
						(const
						
							
								QLine
							
						
						*
						
							lines
						
						,
						
							int
						
						
							lineCount
						
						)
						
					这是重载函数。
默认实现转换第一 lineCount 线条在 lines 到 QLineF 并调用此函数的浮点版本。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawPath
						
						(const
						
							
								QPainterPath
							
						
						&
						
							path
						
						)
						
					默认实现忽略 path 且什么都不做。
[pure virtual]
						
						
							void
						
						QPaintEngine::
						
							drawPixmap
						
						(const
						
							
								QRectF
							
						
						&
						
							r
						
						, const
						
							
								QPixmap
							
						
						&
						
							pm
						
						, const
						
							
								QRectF
							
						
						&
						
							sr
						
						)
						
					重实现此函数以绘制部分 pm 指定通过 sr 矩形在给定 r .
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawPoints
						
						(const
						
							
								QPointF
							
						
						*
						
							points
						
						,
						
							int
						
						
							pointCount
						
						)
						
					绘制第一 pointCount 点在缓冲 points
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawPoints
						
						(const
						
							
								QPoint
							
						
						*
						
							points
						
						,
						
							int
						
						
							pointCount
						
						)
						
					绘制第一 pointCount 点在缓冲 points
默认实现转换第一 pointCount QPoints 在 points 成 QPointF 并调用浮点版本的 drawPoints .
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawPolygon
						
						(const
						
							
								QPointF
							
						
						*
						
							points
						
						,
						
							int
						
						
							pointCount
						
						,
						
							
								QPaintEngine::PolygonDrawMode
							
						
						
							mode
						
						)
						
					重实现此虚函数以绘制多边形定义通过 pointCount 第一点在 points ,使用模式 mode .
注意: 至少某一 drawPolygon() 函数必须被重实现。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawPolygon
						
						(const
						
							
								QPoint
							
						
						*
						
							points
						
						,
						
							int
						
						
							pointCount
						
						,
						
							
								QPaintEngine::PolygonDrawMode
							
						
						
							mode
						
						)
						
					这是重载函数。
重实现此虚函数以绘制多边形定义通过 pointCount 第一点在 points ,使用模式 mode .
注意: 至少某一 drawPolygon () 函数必须被重实现。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawRects
						
						(const
						
							
								QRectF
							
						
						*
						
							rects
						
						,
						
							int
						
						
							rectCount
						
						)
						
					绘制第一 rectCount 矩形在缓冲 rects 。此函数的默认实现调用 drawPath () 或 drawPolygon () 从属描绘引擎的特征集。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawRects
						
						(const
						
							
								QRect
							
						
						*
						
							rects
						
						,
						
							int
						
						
							rectCount
						
						)
						
					这是重载函数。
默认实现转换第一 rectCount 矩形在缓冲 rects 到 QRectF 并调用此函数的浮点版本。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawTextItem
						
						(const
						
							
								QPointF
							
						
						&
						
							p
						
						, const
						
							
								QTextItem
							
						
						&
						
							textItem
						
						)
						
					此函数绘制文本项 textItem 在位置 p 。此函数的默认实现将文本转换成 QPainterPath 并描绘结果路径。
[虚拟]
						
						
							void
						
						QPaintEngine::
						
							drawTiledPixmap
						
						(const
						
							
								QRectF
							
						
						&
						
							rect
						
						, const
						
							
								QPixmap
							
						
						&
						
							pixmap
						
						, const
						
							
								QPointF
							
						
						&
						
							p
						
						)
						
					重实现此函数以绘制 pixmap 以给定 rect ,起始于给定 p 。将重复绘制像素图直到 rect 被填充。
[pure virtual]
						
						
							bool
						
						QPaintEngine::
						
							end
						
						()
						
					重实现此函数以完成当前描绘设备中的描绘。返回 true 若描绘成功完成;否则返回 false。
						返回
						
true
						
						若描绘引擎支持指定
						
							feature
						
						;否则返回
						
false
						
						.
					
						返回
						
true
						
						若描绘引擎的绘制是活动的;否则返回
						
false
						
						.
					
另请参阅 setActive ().
						Returns the device that this engine is painting on, if painting is active; otherwise returns
						
nullptr
						
						.
					
返回描绘引擎的描绘器。
将描绘引擎的活动状态设为 state .
另请参阅 isActive ().
[pure virtual]
						
						
							
								QPaintEngine::Type
							
						
						QPaintEngine::
						
							type
						
						() const
						
					重实现此函数以返回描绘引擎 Type .
[pure virtual]
						
						
							void
						
						QPaintEngine::
						
							updateState
						
						(const
						
							
								QPaintEngineState
							
						
						&
						
							state
						
						)
						
					重实现此函数以更新描绘引擎的状态。
当实现时,此函数负责校验描绘引擎的当前 state 并更新改变特性。使用 QPaintEngineState::state () 函数以找出必须更新哪个特性,然后使用相应 get function 以检索给定特性的当前值。
另请参阅 QPaintEngineState .