WPF的图形微语言
前言
WPF为定义几何图形增加了一种更简明的替换语法,通过该语法可用更少的标记表示详细的图形,这种语法称为图形微语言,并且由于应用于Path元素,也称为路径微语言。
示例
使用两条闭合路径创建了一个基本三角形
xml
<Path Stroke="Blue">
<Path.Data>
<PathGeometry>
<PathFigure IsClosed="True" StartPoint="10,100">
<LineSegment Point="100,100"/>
<LineSegment Point="100,50"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
使用微语言创建该图形
xml
<Path Stroke="Blue" Data="M 10,100 L 100,100 L 100,50 Z"/>
这个路径使用一个包含4个命令序列,第一个命令M创建PathFigure,并将起点设置为(10,100),接下来的两个命令L创建线段,最后一个命令Z结束PathFigure,并将IsClose属性设置为true,这个字符串的逗号是可选的,同样命令及其参数之间的空格也是可选的,但在相邻的两个参数之间以及命令之间要保留一个空格。
进一步精简为下面的形式:
xml
<Path Stroke="Blue" Data="M10 100 L100 100 L100 50 Z"/>
当使用微语言创建几何图形时,实际上是创建了StreamGeometry对象而不是PathGeometry对象,因此,以后再代码中不能修改图形。如果这是不能接受的,可显示的创建PathGeometry,但使用相同的语法定义其PathFigure对象几何。
xml
<Path Stroke="Blue">
<Path.Data>
<PathGeometry Figures="M 10,100 L 100,100 L 100,50 Z"/>
</Path.Data>
</Path>
名称 | 说明 |
---|---|
F value | 设置Geometry.FillRule属性。0表示EvenOdd,1表示NoneZero。如果决定使用该命令,就必须将该命令放在字符串的开头 |
M x,y | 为几何图形创建新的PathFigure对象,并设置其起点。 |
L x,y | 创建一条到指定点的LineSegment几何图形。 |
H x,y | 使用指定的X值创建一条水平的LineSegment几何图形,并保持Y值不变。 |
V x,y | 使用指定的Y值创建一条水平的LineSegment几何图形,并保持X值不变。 |
A radiusX,radiusY | 创建一条到指定点的ArgSegment线段。 |
C x1,y1,x2,y2 x,y | 创建到指定点的贝塞尔曲线,使用(x1,y1)和(x2,y2)作为控制点。 |
Q x1,y1 x,y | 创建到指定点的二次贝塞尔曲线,使用一个控制点(x1,y1)。 |
S x2,y2 x,y | 通过将前一条贝塞尔曲线的第二个控制点作为新建贝塞尔曲线的第一个控制点,从而创建一条光滑的贝塞尔曲线。 |
Z | 结束当前PathFigure对象,并将IsClosed属性设置为true。如果不希望将IsClosed属性设置为true,就不必使用该命令。如果希望开始一个新的PathFigure对象或者结束字符串,只需使用M命令 |