QPaintEngine 类提供抽象定义为如何 QPainter 绘制到给定设备在给定平台。 更多...
头: | #include <QPaintEngine> |
CMake: |
find_package(Qt6 COMPONENTS Gui REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
enum | DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, …, AllDirty } |
flags | DirtyFlags |
enum | PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ConicalGradientFill, …, AllFeatures } |
flags | PaintEngineFeatures |
enum | PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode } |
enum | Type { X11, Windows, MacPrinter, CoreGraphics, QuickDraw, …, 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 |
Qt 为支持不同描绘器后端,提供了几个预制 QPaintEngine 实现。提供的首要描绘引擎是光栅描绘引擎,包含支持所有受支持平台完整特征集的软件光栅化器。 QWidget 基类 (如在 Windows、X11 及 macOS),它是描绘后端在 QImage 且它被用作不支持某些能力的绘制引擎的回退。此外,还提供 QPaintEngine 实现为 OpenGL (可访问透过 QOpenGLWidget ) 和打印 (允许使用 QPainter 绘制在 QPrinter 对象)。
若想要使用 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
|
The engine can use antialiasing to improve the appearance of rendered primitives. |
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 的 Quartz2D (CoreGraphics) |
QPaintEngine::QuickDraw
|
2
|
macOS 的 QuickDraw |
QPaintEngine::QWindowSystem
|
5
|
Qt for Embedded Linux |
QPaintEngine::OpenGL
|
6
|
|
QPaintEngine::Picture
|
7
|
QPicture format |
QPaintEngine::SVG
|
8
|
SVG (可伸缩向量图形) XML 格式 |
QPaintEngine::Raster
|
9
|
|
QPaintEngine::Direct3D
|
10
|
仅 Windows,基于 Direct3D 的引擎 |
QPaintEngine::Pdf
|
11
|
PDF (便携式文档格式) |
QPaintEngine::OpenVG
|
12
|
|
QPaintEngine::User
|
50
|
第一用户类型 ID |
QPaintEngine::MaxUser
|
100
|
最后用户类型 ID |
QPaintEngine::OpenGL2
|
13
|
|
QPaintEngine::PaintBuffer
|
14
|
|
QPaintEngine::Blitter
|
15
|
|
QPaintEngine::Direct2D
|
16
|
仅 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 to QPointFs and calls the floating point version of 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 .