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 .