共用方式為


路徑標記語法

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

先決條件

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

StreamGeometry 和 PathFigureCollection Mini-Languages

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

如上述範例所示,這兩種迷你語言非常類似。 在任何可以使用PathGeometry的情況下,你都可以使用StreamGeometry;那麼,您應該使用哪一個? StreamGeometry當您在建立路徑之後不需要修改路徑時,請使用 ;如果您需要修改路徑,請使用 PathGeometry

PathGeometryStreamGeometry 物件之間差異的詳細資訊,請參閱 Geometry 概觀

關於空白的附註

為了簡潔起見,以下語法區段中會顯示單一空格,但顯示單一空格的地方也同樣接受多個空格。

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

語法

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

StreamGeometry XAML 屬性使用方式
< objectproperty="[ 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 一或多個描述圖形內容的繪圖命令。 請參閱 繪製命令一 節。
關閉命令 一個可選的關閉命令,用於關閉圖形。 請參閱 關閉命令 一節。

移動命令

指定新圖形的起點。

語法
M 起點

(或)

m 起點
術語 說明
起點 System.Windows.Point

新圖的起點。

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

繪製命令

繪製命令可以包含數個圖形命令。 下列圖形命令可供使用:線條、水平線、垂直線、立方貝塞爾曲線、二次方貝塞爾曲線、平滑立方貝塞爾曲線、平滑二次方貝塞爾曲線和橢圓弧線。

您可以使用大寫或小寫字母來輸入每個命令:大寫字母代表絕對值和小寫字母代表相對值:該區段的控制點相對於上述範例的終點。

小提示

當循序輸入相同類型的多個命令時,您可以省略重複的命令專案;例如, L 100,200 300,400 相當於 L 100,200 L 300,400

Line 命令

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

語法
L 終點

(或)

l 終點
術語 說明
端點 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 度或更大,則設定為 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 座標。

特殊值

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

無限大 代表 Double.PositiveInfinity

-Infinity 代表 Double.NegativeInfinity

NaN 代表 Double.NaN

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

另請參閱