The QPen 類定義如何 QPainter 繪製綫條和形狀的輪廓。 更多...
| 頭: | #include <QPen> |
| qmake: | QT += gui |
| QPen () | |
| QPen (Qt::PenStyle style ) | |
| QPen (const QColor & color ) | |
| QPen (const QBrush & brush , qreal width , Qt::PenStyle style = Qt::SolidLine, Qt::PenCapStyle cap = Qt::SquareCap, Qt::PenJoinStyle join = Qt::BevelJoin) | |
| QPen (const QPen & pen ) | |
| QPen (QPen && pen ) | |
| ~QPen () | |
| QBrush | brush () const |
| Qt::PenCapStyle | capStyle () const |
| QColor | color () const |
| qreal | dashOffset () const |
| QVector<qreal> | dashPattern () const |
| bool | isCosmetic () const |
| bool | isSolid () const |
| Qt::PenJoinStyle | joinStyle () const |
| qreal | miterLimit () const |
| void | setBrush (const QBrush & brush ) |
| void | setCapStyle (Qt::PenCapStyle style ) |
| void | setColor (const QColor & color ) |
| void | setCosmetic (bool cosmetic ) |
| void | setDashOffset (qreal offset ) |
| void | setDashPattern (const QVector<qreal> & pattern ) |
| void | setJoinStyle (Qt::PenJoinStyle style ) |
| void | setMiterLimit (qreal limit ) |
| void | setStyle (Qt::PenStyle style ) |
| void | setWidth (int width ) |
| void | setWidthF (qreal width ) |
| Qt::PenStyle | style () const |
| void | swap (QPen & other ) |
| int | width () const |
| qreal | widthF () const |
| operator QVariant () const | |
| bool | operator!= (const QPen & pen ) const |
| QPen & | operator= (const QPen & pen ) |
| QPen & | operator= (QPen && other ) |
| bool | operator== (const QPen & pen ) const |
| QDataStream & | operator<< (QDataStream & stream , const QPen & pen ) |
| QDataStream & | operator>> (QDataStream & stream , QPen & pen ) |
The QPen 類定義如何 QPainter 繪製綫條和形狀的輪廓。
鋼筆擁有 style (), width (), brush (), capStyle () 和 joinStyle ().
鋼筆樣式定義綫條類型。筆刷用於填充采用鋼筆生成的筆畫。使用 QBrush 類來指定填充樣式。帽樣式確定可以繪製的綫端帽使用 QPainter ,而聯接樣式描述如何繪製 2 條綫之間的聯接。可以指定鋼筆寬度以整數 ( width ()) 和浮點 ( widthF ()) 精度。綫寬 0 指示裝飾性鋼筆。這意味著鋼筆寬度始終繪製一像素寬,獨立於 transformation 設置在描繪器。
可以輕鬆修改各種設置使用相應 setStyle (), setWidth (), setBrush (), setCapStyle () 和 setJoinStyle () 函數 (注意:必須重置描繪器鋼筆,當更改鋼筆特性時)。
例如:
QPainter painter(this); QPen pen(Qt::green, 3, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin); painter.setPen(pen);
相當於
QPainter painter(this); QPen pen; // creates a default pen pen.setStyle(Qt::DashDotLine); pen.setWidth(3); pen.setBrush(Qt::green); pen.setCapStyle(Qt::RoundCap); pen.setJoinStyle(Qt::RoundJoin); painter.setPen(pen);
默認鋼筆為純黑色筆刷具有 1 寬度、方帽樣式 ( Qt::SquareCap ),和斜角聯接樣式 ( Qt::BevelJoin ).
此外 QPen 提供 color () 和 setColor ()方便函數以分彆提取和設置鋼筆的筆刷顔色。鋼筆還可以比較和被流化。
一般而言,有關描繪的更多信息,見 描繪係統 文檔編製。
Qt 提供瞭幾種內置樣式錶示通過 Qt::PenStyle 枚舉:
|
|
|
| Qt::SolidLine | Qt::DashLine | Qt::DotLine |
|
|
|
| Qt::DashDotLine | Qt::DashDotDotLine | Qt::CustomDashLine |
隻需使用 setStyle () 函數將鋼筆樣式轉換成內置樣式之一,除瞭 Qt::CustomDashLine 樣式將快速迴退。將樣式設為 Qt::NoPen 告訴描繪器不要繪製綫條 (或輪廓)。鋼筆樣式默認為 Qt::SolidLine .
從 Qt 4.1 起,指定自定義虛綫圖案也是可能的,使用 setDashPattern () 函數將鋼筆樣式隱式轉換成 Qt::CustomDashLine 。圖案自變量 QVector ,的指定必須按偶數 qreal 條目,其中條目 1、3、5 ... 是虛綫而 2、4、6 ... 是間隔。例如,上文所示的自定義圖案是使用以下代碼創建的:
QPen pen; QVector<qreal> dashes; qreal space = 4; dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space; pen.setDashPattern(dashes);
注意,虛綫圖案是以鋼筆寬度為單位指定的 (如:寬度 10 長度 5 的虛綫為 50 像素長)。
檢索目前設置的虛綫圖案, 可以使用 dashPattern () 函數。使用 isSolid () 函數能確定鋼筆是否擁有實心填充。
帽樣式定義綫條端點是如何繪製的使用 QPainter 。帽樣式僅適用於寬綫條 (即:當寬度為 1 或更大時)。 Qt::PenCapStyle 枚舉提供下列樣式:
|
|
|
| Qt::SquareCap | Qt::FlatCap | Qt::RoundCap |
The Qt::SquareCap 樣式是覆蓋端點且延伸超齣其一半綫寬的正方形綫端。 Qt::FlatCap 樣式是不覆蓋綫端點的正方形直綫端。而 Qt::RoundCap 樣式是覆蓋端點的圓形綫端。
默認為 Qt::SquareCap .
是否繪製端點從屬帽樣式,當鋼筆寬度為 0 (或 1) 時。使用 Qt::SquareCap or Qt::RoundCap 繪製它們,使用 Qt::FlatCap 不繪製它們。
聯接樣式定義如何繪製 2 連接綫之間的聯接使用 QPainter 。聯接樣式僅適用於寬綫條 (即:當寬度為 1 或更大時)。 Qt::PenJoinStyle 枚舉提供下列樣式:
|
|
|
| Qt::BevelJoin | Qt::MiterJoin | Qt::RoundJoin |
The Qt::BevelJoin 樣式填充 2 綫條之間的三角形凹槽。 Qt::MiterJoin 樣式延伸綫條以按角度相交。而 Qt::RoundJoin 樣式填充 2 綫條之間的圓弧。
默認為 Qt::BevelJoin .
當 Qt::MiterJoin 樣式被應用,是可能的使用 setMiterLimit () 函數指定斜接聯接可以從聯接點延伸多遠。 miterLimit () 用於縮減綫條聯接之間的僞影,在哪裏綫條接近平行。
The miterLimit () 必須以鋼筆寬度為單位指定 (如:以寬度 10 為單位的 5 斜接限製是 50 像素長)。默認斜接限製為 2 (即:以像素為單位的 2 倍鋼筆寬度)。
|
路徑筆畫範例
路徑筆畫範例展示 Qt 的內置虛綫圖案和展示如何使用自定義圖案以延伸可用圖案的範圍。 |
另請參閱 QPainter , QBrush , 路徑筆畫範例 ,和 塗鴉範例 .
構造默認黑色實綫鋼筆采用 1 寬度。
構造黑色鋼筆采用 1 寬度和給定 style .
另請參閱 setStyle ().
構造實綫鋼筆采用 1 寬度和給定 color .
另請參閱 setBrush () 和 setColor ().
構造鋼筆采用指定 brush , width ,鋼筆 style , cap 樣式和 join 樣式。
另請參閱 setBrush (), setWidth (), setStyle (), setCapStyle (),和 setJoinStyle ().
構造鋼筆是副本對於給定 pen .
構造鋼筆移動自給定 pen .
移動自鋼筆隻可以賦值、拷貝 (或銷毀)。任何其它操作 (先於賦值) 將導緻未定義行為。
該函數在 Qt 5.4 引入。
銷毀鋼筆。
返迴用於填充由此鋼筆生成的筆畫的筆刷。
另請參閱 setBrush ().
返迴鋼筆帽樣式。
另請參閱 setCapStyle () 和 帽樣式 .
返迴此鋼筆的筆刷顔色。
返迴鋼筆的虛綫偏移。
另請參閱 setDashOffset ().
返迴此鋼筆的虛綫模式。
另請參閱 setDashPattern (), style (),和 isSolid ().
返迴
true
若鋼筆是裝飾性的;否則返迴
false
.
裝飾性鋼筆用於繪製擁有常量寬度的筆畫,不管將任何變換應用到 QPainter 要使用它們。采用裝飾性鋼筆繪製形狀可確保其輪廓在不同比例縮放因子下,都擁有相同厚度。
0 寬鋼筆是裝飾性的,默認情況下。
另請參閱 setCosmetic () 和 widthF ().
返迴
true
若鋼筆擁有實心填充,否則 false。
另請參閱 style () 和 dashPattern ().
返迴鋼筆的聯接樣式。
另請參閱 setJoinStyle () 和 聯接樣式 .
返迴鋼筆的斜接限製。斜接限製纔相關,當將聯接樣式設為 Qt::MiterJoin .
另請參閱 setMiterLimit () 和 聯接樣式 .
將用於填充由此鋼筆生成描邊的筆畫,設為給定 brush .
將鋼筆的帽樣式設為給定 style 。默認值為 Qt::SquareCap .
將此鋼筆的筆刷顔色設為給定 color .
將此鋼筆設為裝飾性 (或非裝飾性) 的,從屬值 cosmetic .
另請參閱 isCosmetic ().
將此鋼筆的虛綫偏移 (虛綫圖案的起點) 設為 offset 指定。根據用於指定虛綫圖案的單位,測量偏移。
|
For example, a pattern where each stroke is four units long, followed by a gap of two units, will begin with the stroke when drawn as a line. However, if the dash offset is set to 4.0, any line drawn will begin with the gap. Values of the offset up to 4.0 will cause part of the stroke to be drawn first, and values of the offset between 4.0 and 6.0 will cause the line to begin with part of the gap. |
注意: 這將鋼筆樣式隱式轉換成 Qt::CustomDashLine .
另請參閱 dashOffset ().
將此鋼筆的虛綫圖案設為給定 pattern 。這將鋼筆樣式隱式轉換成 Qt::CustomDashLine .
圖案必須按正值條目偶數指定,其中條目 1、3、5 ... 是虛綫而 2、4、6 ... 是間隔。例如:
|
QPen pen; QVector<qreal> dashes; qreal space = 4; dashes << 1 << space << 3 << space << 9 << space << 27 << space << 9 << space; pen.setDashPattern(dashes); |
The dash pattern is specified in units of the pens width; e.g. a dash of length 5 in width 10 is 50 pixels long. Note that a pen with zero width is equivalent to a cosmetic pen with a width of 1 pixel.
Each dash is also subject to cap styles so a dash of 1 with square cap set will extend 0.5 pixels out in each direction resulting in a total width of 2.
注意,默認帽樣式為 Qt::SquareCap , meaning that a square line end covers the end point and extends beyond it by half the line width.
另請參閱 setStyle (), dashPattern (), setCapStyle (),和 setCosmetic ().
將鋼筆的聯接樣式設為給定 style 。默認值為 Qt::BevelJoin .
將此鋼筆的斜接限製設為給定 limit .
斜接限製描述斜接聯接可以從聯接點延伸多遠。這用於縮減綫條聯接之間的僞影,在哪裏綫條接近平行。
此值纔有效,當將鋼筆樣式設為 Qt::MiterJoin 。值以鋼筆寬度為單位指定 (如:以寬度 10 為單位的 5 斜接限製是 50 像素長)。默認斜接限製為 2 (即:以像素為單位的 2 倍鋼筆寬度)。
另請參閱 miterLimit (), setJoinStyle (),和 聯接樣式 .
將鋼筆樣式設為給定 style .
見 Qt::PenStyle 文檔編製瞭解可用樣式列錶。從 Qt 4.1 起,指定自定義虛綫圖案也是可能的使用 setDashPattern () 函數將鋼筆樣式隱式轉換成 Qt::CustomDashLine .
注意: 此函數將虛綫偏移重置為 0。
將鋼筆寬度設為給定 width 以像素為單位按整數精度。
綫寬 0 指示裝飾性鋼筆。這意味著鋼筆寬度始終繪製一像素寬,獨立於 transformation 設置在描繪器。
不支持采用負值設置鋼筆寬度。
將鋼筆寬度設為給定 width 以像素為單位按浮點精度。
綫寬 0 指示裝飾性鋼筆。這意味著鋼筆寬度始終繪製一像素寬,獨立於 transformation 在描繪器。
不支持采用負值設置鋼筆寬度。
返迴鋼筆樣式。
交換鋼筆 other 與此鋼筆。此操作很快且從不失敗。
該函數在 Qt 4.8 引入。
按整數精度返迴鋼筆寬度。
按浮點精度返迴鋼筆寬度。
返迴鋼筆作為 QVariant .
返迴
true
若鋼筆不同於給定
pen
;否則 false。2 鋼筆不同,若它們擁有不同樣式、寬度或顔色。
另請參閱 operator== ().
賦值給定 pen 到此鋼筆並返迴此鋼筆的引用。
移動賦值 other 到此 QPen 實例。
該函數在 Qt 5.2 引入。
返迴
true
若鋼筆等於給定
pen
;否則 false。2 鋼筆相等,若它們擁有相等樣式、寬度及顔色。
另請參閱 operator!= ().
寫入給定 pen 到給定 stream 並返迴引用針對 stream .
另請參閱 序列化 Qt 數據類型 .
讀取鋼筆從給定 stream 進給定 pen 並返迴引用針對 stream .
另請參閱 序列化 Qt 數據類型 .