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 (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 |
| uint | active |
| QScopedPointer<QPaintEnginePrivate> | d_ptr |
| uint | extended |
| QPaintEngine::PaintEngineFeatures | gccaps |
| uint | selfDestruct |
| QPaintEngineState * | state |
The QPaintEngine 類提供抽象定義為如何 QPainter 繪製到給定設備在給定平颱。
Qt 提供瞭幾種預製實現的 QPaintEngine 為我們支持的不同描繪器後端。提供的首要描繪引擎是光柵描繪引擎,包含支持所有支持平颱中的完整特徵集的軟件光柵化器。描繪默認使用這在 QWidget -based classes in e.g. on Windows, X11 and macOS , it is the backend for painting on QImage 且它被用作不支持某些能力的描繪引擎的迴退。此外,我們還提供 QPaintEngine 實現為 OpenGL (可訪問透過 QGLWidget) 和打印 (允許使用 QPainter to draw on a QPrinter object).
若想要使用 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
|
引擎可以使用抗鋸齒以改進渲染圖元的外觀。 |
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 's Quartz2D (CoreGraphics) |
QPaintEngine::QuickDraw
|
2
|
macOS '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::Direct2D
|
17
|
僅 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 成 QPointF 並調用浮點版本的 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 .