QPaintEngine 類

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 (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 , 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 提供瞭幾種預製實現的 QPaintEngine 為我們支持的不同描繪器後端。提供的首要描繪引擎是光柵描繪引擎,包含支持所有支持平颱中的完整特徵集的軟件光柵化器。描繪默認使用這在 QWidget 基類 (如在 Windows、X11 及 macOS),它是描繪後端在 QImage 且它被用作不支持某些能力的描繪引擎的迴退。此外,我們還提供 QPaintEngine 實現為 OpenGL (可訪問透過 QGLWidget) 和打印 (允許使用 QPainter 繪製在 QPrinter 對象)。

若想要使用 QPainter 繪製到不同後端,必須子類 QPaintEngine 並重實現其所有虛函數。 QPaintEngine 實現然後就可用瞭通過子類化 QPaintDevice 並重實現虛函數 QPaintDevice::paintEngine ().

QPaintEngine 的創建和擁有是通過 QPaintDevice 創建它。

另請參閱 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 macOS 的 Quartz2D (CoreGraphics)
QPaintEngine::QuickDraw 2 macOS 的 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 的引擎

成員函數文檔編製

QPaintEngine:: QPaintEngine ( PaintEngineFeatures caps = PaintEngineFeatures())

創建描繪引擎采用的特徵集指定通過 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

返迴 true 若描繪引擎支持指定 feature ;否則返迴 false .

bool QPaintEngine:: isActive () const

返迴 true 若描繪引擎的繪製是活動的;否則返迴 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 .