路徑標記語法
在 WPF 中的圖形和基本繪圖概觀 和 幾何 概觀中 會討論路徑,不過本主題詳細說明了您可以使用可延伸應用程式標記語言更精簡地指定路徑幾何的強大複雜迷你語言。
必要條件
若要瞭解本主題,您應該熟悉物件的基本功能 Geometry 。 如需詳細資訊,請參閱 幾何概觀。
StreamGeometry 和 PathFigureCollection 迷你語言
WPF 提供兩種類別,提供用於描述幾何路徑的迷你語言: StreamGeometry 和 PathFigureCollection 。
設定 類型的 屬性時, StreamGeometry 您可以使用迷你語言,例如 Clip 專案的 屬性 UIElement 或 Data 屬性 Path 。 Geometry 下列範例會使用屬性語法來建立 StreamGeometry 。
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
設定 的 PathGeometry 屬性時 Figures , PathFigureCollection 您可以使用迷你語言。 下列範例會使用屬性語法來建立 PathFigureCollection 的 PathGeometry 。
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
在上述範例中,您可以發現這兩個迷你語言非常相似。 在您可以使用 的任何情況下 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 使用 EvenOdd 或 NonzeroFillRule 。 - 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 30
和 L 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)。
三次方貝茲曲線命令
使用兩個指定的控制點 ( controlPoint
1 controlPoint
到 2) 建立目前點與指定終點之間的立方貝茲曲線。 C 100,200 200,400 300,200
為有效曲線命令的範例。
語法 |
---|
C controlPoint 1controlPoint 2endPoint - 或 - c controlPoint 1controlPoint 2endPoint |
詞彙 | 描述 |
---|---|
controlPoint 1 |
System.Windows.Point 曲線的第一個控制點,它能決定曲線的起始正切函數。 |
controlPoint 2 |
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 曲線要繪製到的點。 |
平滑三次方貝茲曲線命令
在目前的點和指定的結束點之間建立三次方貝茲曲線。 第一個控制點會假設為 (相對於目前的點) 上一個命令之第二個控制點的反映。 如果沒有上一個命令,或者上一個命令不是三次方貝茲曲線命令或平滑三次方貝茲曲線命令,則會假設第一個控制點和目前的點一致。 第二個控制點 (曲線結尾的控制點) 是由 controlPoint
2 指定。 例如, S 100,200 200,300
是有效的平滑立方貝茲曲線命令。
語法 |
---|
S controlPoint 2endPoint - 或 - s controlPoint 2endPoint |
詞彙 | 描述 |
---|---|
controlPoint 2 |
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
是有效的值。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應