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。
<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 XAML 属性用法 |
---|
< 对象**属性 =" [ fillRule ] figureDescription [ figureDescription ] * " ... /> |
可扩展应用程序标记语言 (XAML)属性使用语法PathFigureCollection由一个或多个图形说明组成。
PathFigureCollection XAML Attribute Usage |
---|
< 对象**属性 =" figureDescription [ figureDescription ] * " ... /> |
术语 | 描述 |
---|---|
fillRule | System.Windows.Media.FillRule 指定是否StreamGeometry使用EvenOdd或Nonzero FillRule。 - 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 controlPoint endPoint - 或 -t controlPoint endPoint |
术语 | 描述 |
---|---|
controlPoint | System.Windows.Point曲线的控制点,决定曲线的起点和曲线的切线。 |
endPoint | System.Windows.Point绘制曲线将通过的点。 |
椭圆弧命令
在当前点和指定的终点之间创建一个椭圆弧。
语法 |
---|
- 或 - |
术语 | 描述 |
---|---|
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 坐标。 |