共用方式為


路徑標記語法

WPF 中的形狀和基本繪圖概觀幾何概觀中討論過了路徑,不過,本主題會詳細說明您可用於更緊湊地指定路徑幾何形狀的強大且復雜的迷你語言 (透過使用 Extensible Application Markup Language(XAML))。

必要條件

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

StreamGeometry 和 PathFigureCollection 迷你語言

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

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

如需 PathGeometryStreamGeometry 物件之間差異的詳細資訊,請參閱幾何概觀

關於空白字元

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

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

語法

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

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

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

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

指定 StreamGeometry 是否使用 EvenOddNonzeroFillRule

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

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

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

移動命令

指定新圖表的起點。

語法
M startPoint

- 或 -

m startPoint
詞彙 描述
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 為有效線條命令的範例。

語法
L endPoint

- 或 -

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

行的結束點。

大寫 L 表示 endPoint 為絕對值;小寫 l 表示 endPoint 是前一個點的位移,或是 (0,0) (如果不存在前一個點的話)。

水平線命令

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

語法
H x

- 或 -

h x
詞彙 描述
x System.Double

線條結束點的 X 座標。

大寫 H 表示 x 為絕對值;小寫 h 表示 x 是前一個點的位移,或是 (0,0) (如果不存在前一個點的話)。

垂直線命令

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

語法
V y

- 或 -

v y
詞彙 描述
y System.Double

線條結束點的 Y 座標。

大寫 V 表示 y 為絕對值;小寫 v 表示 y 是前一個點的位移,或是 (0,0) (如果不存在前一個點的話)。

三次方貝茲曲線命令

透過使用兩個指定的控制點 (controlPoint1 和 controlPoint2),在目前的點和指定的結束點之間建立三次方貝茲曲線。 C 100,200 200,400 300,200 為有效曲線命令的範例。

語法
C controlPoint1controlPoint2endPoint

- 或 -

c controlPoint1controlPoint2endPoint
詞彙 描述
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 為有效的平滑三次方貝茲曲線命令。

語法
S controlPoint2endPoint

- 或 -

s controlPoint2endPoint
詞彙 描述
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 為有效的值。

另請參閱