The QPaintEngine 类提供抽象定义为如何 QPainter 绘制到给定设备在给定平台。 更多...
| 头: | #include <QPaintEngine> |
| 继承者: | QRasterPaintEngine |
| 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, ..., Blitter } |
| QPaintEngine (PaintEngineFeatures caps = 0) | |
| 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 , PolygonDrawMode mode ) |
| virtual void | drawPolygon (const QPoint * points , int pointCount , 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 (PaintEngineFeatures feature ) const |
| bool | isActive () const |
| QPaintDevice * | paintDevice () const |
| QPainter * | painter () const |
| void | setActive (bool state ) |
| virtual Type | type () const = 0 |
| virtual void | updateState (const QPaintEngineState & state ) = 0 |
The QPaintEngine 类提供抽象定义为如何 QPainter 绘制到给定设备在给定平台。
Qt 4.0 provides several premade implementations of QPaintEngine for the different painter backends we support. We provide one paint engine for each window system and painting framework we support. This includes X11 on Unix/Linux and CoreGraphics on Mac OS X. In addition we provide QPaintEngine 实现为 OpenGL (accessible through QGLWidget ) 和 PostScript (accessible through QPSPrinter on X11). Additionally there is a raster-based paint engine that is a fallback for when an engine does not support a certain capability.
若想要使用 QPainter 绘制到不同后端,必须子类 QPaintEngine 并重实现其所有虚函数。 QPaintEngine 实现然后就可用了通过子类化 QPaintDevice 并重实现虚函数 QPaintDevice::paintEngine ().
QPaintEngine 的创建和拥有是通过 QPaintDevice 创建它。
The big advantage of the QPaintEngine approach opposed to Qt 3's QPainter /QPaintDevice::cmd() approach is that it is now possible to adapt to multiple technologies on each platform and take advantage of each to the fullest.
另请参阅 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
|
Mac OS X's Quartz2D (CoreGraphics) |
QPaintEngine::QuickDraw
|
2
|
Mac OS X'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
|
创建描绘引擎采用的特征集指定通过 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
,
PolygonDrawMode
mode
)
重实现此虚函数以绘制多边形定义通过 pointCount 第一点在 points ,使用模式 mode .
注意: 至少某一 drawPolygon() 函数必须被重实现。
[虚拟]
void
QPaintEngine::
drawPolygon
(const
QPoint
*
points
,
int
pointCount
,
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。
Returns true if the paint engine supports the specified feature ;否则返回 false。
Returns true if the paint engine is actively drawing; otherwise returns false.
另请参阅 setActive ().
返回此引擎在其中描绘的设备,若描绘是活动的;否则返回 0。
返回描绘引擎的描绘器。
将描绘引擎的活动状态设为 state .
另请参阅 isActive ().
[pure virtual]
Type
QPaintEngine::
type
() const
重实现此函数以返回描绘引擎 Type .
[pure virtual]
void
QPaintEngine::
updateState
(const
QPaintEngineState
&
state
)
重实现此函数以更新描绘引擎的状态。
当实现时,此函数负责校验描绘引擎的当前 state 并更新改变特性。使用 QPaintEngineState::state () 函数以找出必须更新哪个特性,然后使用相应 get function 以检索给定特性的当前值。
另请参阅 QPaintEngineState .