在 WPF 中的圖形和基本繪圖概觀和幾何概觀中會討論路徑,不過本主題詳細說明瞭您可以使用可延伸應用程式標記語言更精簡地指定路徑幾何的強大複雜迷你語言。
先決條件
若要瞭解本主題,您應該熟悉物件的基本功能 Geometry 。 如需詳細資訊,請參閱 幾何概觀。
StreamGeometry 和 PathFigureCollection Mini-Languages
WPF 提供兩種類別,提供用於描述幾何路徑的迷你語言: StreamGeometry 和 PathFigureCollection。
當設定StreamGeometry類型的屬性時,例如Geometry的Clip屬性或UIElement元素的Data屬性,您可以使用Path迷你語言。 下列範例會使用屬性語法來建立 StreamGeometry。
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
您在設定 PathFigureCollection 的 Figures 屬性時,可以使用 PathGeometry 迷你語言。 下列範例會使用屬性語法來為 PathFigureCollection 建立 PathGeometry。
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
如上述範例所示,這兩種迷你語言非常類似。 在任何可以使用PathGeometry的情況下,你都可以使用StreamGeometry;那麼,您應該使用哪一個? StreamGeometry當您在建立路徑之後不需要修改路徑時,請使用 ;如果您需要修改路徑,請使用 PathGeometry 。
PathGeometry 和 StreamGeometry 物件之間差異的詳細資訊,請參閱 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 是否使用 EvenOdd 或 NonzeroFillRule。 - 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 30
和 L 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)。
立方貝塞爾曲線命令
使用兩個指定的控制點(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 度或更大,則設定為 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
是有效的值。