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 .