WPF提供了了两种方法在Path中描述 图形数据,一种方法通过StreamGeometry的XAML代码表示形式,也是最简洁的表示形式。 示例如下:
<Path Stroke="Black" Data="M 100,240 C 510,300 80,100 300,160 H40 v80" />
另外一种方法则是通过PathGeometry进行描述 ,示例代码如下:
<PathGeometry Figures="M 10,100 C 10,300 300,-160 300,100" />
两种方式具有相同的图形描述效果,差别在于:使用StreamGeometry具有图形封闭的特点,不允许进行图形修改;而采用PathGeometry可以进行内容修改。
无论采用StreamGeometryhai'还是PathGeometry进行图形内容描述,均具有相同的图形绘制命令:
- 起点命令:M
- 终点命令:Z,表示封闭图形,让图形头尾相接;
- :Line(L)
- 水平直线: Horizontal line(H)
- 垂直直线: Vertical line(V)
- 三次方程式贝塞尔曲线: Cubic Bezier curve(C)
- 二次方程式贝塞尔曲线: Quadratic Bezier curve(Q)
- 平滑三次方程式贝塞尔曲线: Smooth cubic Bezier curve(S)
- 平滑二次方程式贝塞尔曲线: smooth quadratic Bezier curve(T)
- 椭圆圆弧: elliptical Arc(A)
圆弧绘制示例:
<Path x:Name="westSouthButton" Canvas.Left="10" Canvas.Top="10" Style="{StaticResource PathFirstStyle4}">
<Path.Data>
<PathGeometry Figures="M 12.37,87.5 A 55,55 0 0 0 60,115" />
</Path.Data>
</Path>
表示从点12.37 87.5位置开始绘制弧线,
55,55: System.Windows.Size类型,指定椭圆圆弧X,Y方向上的半径值。
圆弧旋转角度值(rotationAngle):椭圆弧的旋转角度值。
优势弧的标记(isLargeArcFlag):是否为优势弧,如果弧的角度大于等于180度,则设为1,否则为0。
正负角度标记(sweepDirectionFlag):当正角方向绘制时设为1,否则为0。
60,115:结束点坐标,System.Windows.Point类型。