QPaintEngine 类

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 (),和 描绘系统 .

成员类型文档编制

enum QPaintEngine:: DirtyFlag
flags QPaintEngine:: DirtyFlags

常量 描述
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 组合。

enum QPaintEngine:: PaintEngineFeature
flags QPaintEngine:: PaintEngineFeatures

此枚举用于描述描绘引擎拥有的特征 (或能力)。若特征不被引擎支持, 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 组合。

enum QPaintEngine:: PolygonDrawMode

常量 描述
QPaintEngine::OddEvenMode 0 应使用 OddEven (奇偶) 填充规则绘制多边形。
QPaintEngine::WindingMode 1 应使用 Winding (卷绕) 填充规则绘制多边形。
QPaintEngine::ConvexMode 2 多边形是凸多边形,且可以使用专用算法绘制若可用。
QPaintEngine::PolylineMode 3 只应绘制多边形轮廓。

enum QPaintEngine:: Type

常量 描述
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

成员函数文档编制

QPaintEngine:: QPaintEngine ( PaintEngineFeatures caps = 0)

创建描绘引擎采用的特征集指定通过 caps .

[虚拟] QPaintEngine:: ~QPaintEngine ()

销毁描绘引擎。

[pure virtual] bool QPaintEngine:: begin ( QPaintDevice * pdev )

重实现此函数以初始化描绘引擎,当开始描绘在描绘设备 pdev 。返回 true 若成功初始化;否则返回 false。

另请参阅 end () 和 isActive ().

[虚拟] 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。

另请参阅 begin () 和 isActive ().

bool QPaintEngine:: hasFeature ( PaintEngineFeatures feature ) const

Returns true if the paint engine supports the specified feature ;否则返回 false。

bool QPaintEngine:: isActive () const

Returns true if the paint engine is actively drawing; otherwise returns false.

另请参阅 setActive ().

QPaintDevice * QPaintEngine:: paintDevice () const

返回此引擎在其中描绘的设备,若描绘是活动的;否则返回 0。

QPainter * QPaintEngine:: painter () const

返回描绘引擎的描绘器。

void QPaintEngine:: setActive ( bool state )

将描绘引擎的活动状态设为 state .

另请参阅 isActive ().

[pure virtual] Type QPaintEngine:: type () const

重实现此函数以返回描绘引擎 Type .

[pure virtual] void QPaintEngine:: updateState (const QPaintEngineState & state )

重实现此函数以更新描绘引擎的状态。

当实现时,此函数负责校验描绘引擎的当前 state 并更新改变特性。使用 QPaintEngineState::state () 函数以找出必须更新哪个特性,然后使用相应 get function 以检索给定特性的当前值。

另请参阅 QPaintEngineState .