路徑標記語法

在 WPF 中的圖形和基本繪圖概觀 幾何 概觀中 會討論路徑,不過本主題詳細說明了您可以使用可延伸應用程式標記語言更精簡地指定路徑幾何的強大複雜迷你語言。

必要條件

若要瞭解本主題,您應該熟悉物件的基本功能 Geometry 。 如需詳細資訊,請參閱 幾何概觀

StreamGeometry 和 PathFigureCollection 迷你語言

WPF 提供兩種類別,提供用於描述幾何路徑的迷你語言: StreamGeometryPathFigureCollection

在上述範例中,您可以發現這兩個迷你語言非常相似。 在您可以使用 的任何情況下 StreamGeometry ,一律可以使用 PathGeometry ;因此您應該使用哪一個? StreamGeometry當您在建立路徑之後不需要修改路徑時,請使用 ;如果您需要修改路徑,請使用 PathGeometry

如需 和 物件之間 PathGeometry 差異的詳細資訊,請參閱 Geometry 概觀 StreamGeometry

關於空白字元

為了簡潔起見,會在後續的語法區段中會顯示單一空格,但是在顯示單一空格的位置也接受多個空格。

兩個數字實際上不必以逗號或空格分隔,但只有在產生的字串明確時,才能這麼做。 例如, 2..3 實際上是兩個數字:「2.」 和 「.3」。 同樣地, 2-3 是 「2」 和 「-3」。 命令之前或之後也一樣不需要空格。

語法

的 Extensible Application Markup Language (XAML) 屬性使用語法 StreamGeometry 是由選擇性 FillRule 值和一或多個圖表描述所組成。

StreamGeometry XAML 屬性使用方式
<object property =" [ fillRule ] figureDescription [ figureDescription ]*" ... />

的 Extensible Application Markup Language (XAML) 屬性使用語法 PathFigureCollection 是由一或多個圖形描述所組成。

PathFigureCollection XAML 屬性使用方式
<object 屬性 ="figureDescription [ figureDescription ]*" ... />
詞彙 描述
fillRule System.Windows.Media.FillRule

指定 是否 StreamGeometry 使用 EvenOddNonzeroFillRule

- F0 指定 EvenOdd 填滿規則。
- F1 指定 Nonzero 填滿規則。

如果您省略此命令,子路徑會使用預設行為,也就是 EvenOdd 。 如果您指定此命令,您必須先放置它。
figureDescription 由移動命令、繪製命令以及選擇性的關閉命令所組成的圖表。

moveCommand drawCommands [ closeCommand ]
moveCommand 指定圖表起點的移動命令。 請參閱移動命令 一節。
drawCommands 說明圖表內容的一或多個繪製命令。 請參閱繪製命令一 節。
closeCommand 關閉圖表的選擇性關閉命令。 請參閱關閉命令 一節。

移動命令

指定新圖表的起點。

語法
MstartPoint

- 或 -

mstartPoint
詞彙 描述
startPoint System.Windows.Point

新圖表的起點。

大寫 M 表示是 startPoint 絕對值;小寫 m 表示為 startPoint 前一點的位移,如果沒有,則為 (0,0)。 如果您在移動命令之後列出多個點,則會如您指定線條命令一般,在這些點之間繪製線條。

繪製命令

繪製命令可以由數個圖形命令組成。 有下列圖形命令可使用:線條、水平線、垂直線、三次方貝茲曲線、二次方貝茲曲線、平滑三次方貝茲曲線、平滑二次方貝茲曲線,以及橢圓形弧線。

透過使用大寫或小寫字母來輸入每個命令:大寫字母表示絕對值,而小寫字母表示相對值:該區段的控制點相對於先前範例的結束點。 當循序輸入相同類型的多個命令時,您可以省略重複的命令專案;例如, L 100,200 300,400 相當於 L 100,200 L 300,400 。 下表說明 移動和 繪製命令。

線條命令

在目前的點和指定的點之間建立直線。 l 20 30L 20,30 是有效 命令的範例。

語法
LendPoint

- 或 -

lendPoint
詞彙 描述
endPoint System.Windows.Point

行的結束點。

大寫 L 表示是 endPoint 絕對值;小寫 l 表示為 endPoint 前一點的位移,如果沒有,則為 (0,0)。

水平線命令

在目前的點和指定的 X 座標之間建立水平線。 H 90 為有效水平線命令的範例。

語法
Hx

- 或 -

hx
詞彙 描述
x System.Double

線條結束點的 X 座標。

大寫 H 表示是 x 絕對值;小寫 h 表示為 x 前一點的位移,如果沒有,則為 (0,0)。

垂直線命令

在目前的點和指定的 Y 座標之間建立垂直線。 v 90 為有效垂直線命令的範例。

語法
Vy

- 或 -

vy
詞彙 描述
y System.Double

線條結束點的 Y 座標。

大寫 V 表示是 y 絕對值;小寫 v 表示為 y 前一點的位移,如果沒有,則為 (0,0)。

三次方貝茲曲線命令

使用兩個指定的控制點 ( controlPoint 1 controlPoint 到 2) 建立目前點與指定終點之間的立方貝茲曲線。 C 100,200 200,400 300,200 為有效曲線命令的範例。

語法
CcontrolPoint1controlPoint2endPoint

- 或 -

ccontrolPoint1controlPoint2endPoint
詞彙 描述
controlPoint1 System.Windows.Point

曲線的第一個控制點,它能決定曲線的起始正切函數。
controlPoint2 System.Windows.Point

曲線的第二個控制點,它能決定曲線的結束正切函數。
endPoint System.Windows.Point

曲線要繪製到的點。

二次方貝茲曲線命令

使用指定的控制點 ( controlPoint ) 建立目前點與指定終點之間的二次方貝茲曲線。 q 100,200 300,200 為有效二次方貝茲曲線命令的範例。

語法
Q controlPoint endPoint

- 或 -

q controlPoint endPoint
詞彙 描述
controlPoint System.Windows.Point

曲線的控制點,它能決定曲線的起始正切函數和結束正切函數。
endPoint System.Windows.Point

曲線要繪製到的點。

平滑三次方貝茲曲線命令

在目前的點和指定的結束點之間建立三次方貝茲曲線。 第一個控制點會假設為 (相對於目前的點) 上一個命令之第二個控制點的反映。 如果沒有上一個命令,或者上一個命令不是三次方貝茲曲線命令或平滑三次方貝茲曲線命令,則會假設第一個控制點和目前的點一致。 第二個控制點 (曲線結尾的控制點) 是由 controlPoint2 指定。 例如, S 100,200 200,300 是有效的平滑立方貝茲曲線命令。

語法
ScontrolPoint2endPoint

- 或 -

scontrolPoint2endPoint
詞彙 描述
controlPoint2 System.Windows.Point

曲線的控制點,它能決定曲線的結束正切函數。
endPoint System.Windows.Point

曲線要繪製到的點。

平滑二次方貝茲曲線命令

在目前的點和指定的結束點之間建立二次方貝茲曲線。 控制點會假設為 (相對於目前的點) 上一個命令之控制點的反映。 如果沒有上一個命令,或者上一個命令不是二次方貝茲曲線命令或平滑二次方貝茲曲線命令,則控制點和目前的點一致。

語法
T endPoint

- 或 -

t endPoint
詞彙 描述
endPoint System.Windows.Point

曲線要繪製到的點。

橢圓形弧線命令

在目前的點和指定的結束點之間建立橢圓形弧線。

語法
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

- 或 -

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
詞彙 描述
size System.Windows.Size

弧線的半徑 X 和 Y。
rotationAngle System.Double

橢圓形的旋轉 (以角度為單位)。
isLargeArcFlag 如果弧線的角度應該為 180 度或大於 180 度,則設定為 1;否則,請設定為 0。
sweepDirectionFlag 如果弧線是以正值角度的方向繪製,則設定為 1;否則,請設定為 0。
endPoint System.Windows.Point

弧線要繪製到的點。

關閉命令

結束目前的圖表,並建立連接目前的點和圖表起點的線條。 此命令會在圖表的最後一個區段和第一個區段之間建立線條聯結 (邊角)。

語法
Z

- 或 -

z

點語法

描述點的 X 和 Y 座標,其中 (0,0) 是左上角。

語法
x , y

- 或 -

x y
詞彙 描述
x System.Double

點的 X 座標。
y System.Double

點的 Y 座標。

特殊值

除了標準數值,您也可以使用下列特殊值。 這些值會區分大小寫。

Infinity
表示 Double.PositiveInfinity

-Infinity
表示 Double.NegativeInfinity

NaN
表示 Double.NaN

您也可以使用科學記號標記法。 例如, +1.e17 是有效的值。

另請參閱