【wpf】Path画扇形以及Path的Data属性的理解

时间:2021-12-12 11:15:14
                                <Path x:Name="PathFillColor" Fill="{TemplateBinding Property=Button.Background}">
<Path.Data>
<PathGeometry>
<PathFigure StartPoint="1,24" IsClosed="True">
<LineSegment Point="35,58"/>
<ArcSegment Size="55,20" Point="59,48" SweepDirection="Clockwise"/>
<LineSegment Point="59,1"/>
<ArcSegment Size="80,80" Point="1,24" SweepDirection="Counterclockwise"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>

  【wpf】Path画扇形以及Path的Data属性的理解

PathFigure派生自 PathSegment 的类(例如 ArcSegmentBezierSegment 和 LineSegment),表示特定类型的几何图形段。

常这些包括:ArcSegment

BezierSegment , LineSegmentPolyBezierSegmentPolyLineSegmentPolyQuadraticBezierSegmentQuadraticBezierSegment.

1,LineSegment 是最简单的线段类型。 线条的起点是前一个线段的起点或最后一点。

2,ArcSegment表示两点之间的一条椭圆弧。Size代表圆弧的X,Y轴半径,例子中Size="55,20"表示X半径为55,Y轴半径为20的椭圆。

  SweepDirection获取或设置一个值,该值指定是以 Clockwise[指定按顺时针(正角)方向绘制圆弧。] 方向还是以 Counterclockwise [指定按逆时针(负角)方向绘制圆弧。]方向绘制弧

3,BezierSegment 由四个点定义:一个起点、一个终点 (Point3) 和两个控制点(Point1 和 Point2)。 BezierSegment 类不包含用于曲线起点的属性;它只定义终点。 曲线的起点是 PathFigure 的当前点,向该点添加了 BezierSegment。

 

 

Path的Data属性详解

出处:http://blog.csdn.net/johnsuna/article/details/1885597

【wpf】Path画扇形以及Path的Data属性的理解

<Path Stroke="Black" Data="M 100,240 C 510,300 80,100 300,160 H40 v80" />

1. 移动指令:Move Command(M):M 起始点  或者:m 起始点
比如:M 100,240或m 100,240
使用大写M时,表示绝对值; 使用小写m时; 表示相对于前一点的值,如果前一点没有指定,则使用(0,0)。

2. 绘制指令(Draw Command):
我们可以绘制以下形状:
(1) 直线:Line(L)格式:L 结束点坐标 或: l 结束点坐标。
(2) 水平直线: Horizontal line(H)格式:H x值 或 h x值(x为System.Double类型的值)
(3) 垂直直线: Vertical line(V)格式:V y值 或 v y值(y为System.Double类型的值)
(4) 三次方程式贝塞尔曲线: Cubic Bezier curve(C)格式:C 第一控制点 第二控制点 结束点 或 c 第一控制点 第二控制点 结束点
(5) 二次方程式贝塞尔曲线: Quadratic Bezier curve(Q)格式:Q 控制点 结束点 或 q 控制点 结束点
(6) 平滑三次方程式贝塞尔曲线: Smooth cubic Bezier curve(S)格式:S 控制点 结束点 或 s 控制点 结束点
(7) 平滑二次方程式贝塞尔曲线: smooth quadratic Bezier curve(T)格式:T 控制点 结束点 或 t 控制点 结束点
(8) 椭圆圆弧: elliptical Arc(A) 

Z指令,它就是一个关闭指令(close Command),表示封闭指定形状,即将首尾点连接起来形成封闭的区域。

上面每种形状后用括号括起的英文字母为命令简写的大写形式,但你也可以使用小写。使用大写与小写的区别是:大写是绝对值,小写是相对值。

当我们重复使用同一种类型时,就可以省略前面的命令。比如:L 100, 200 L 300,400简写为:L 100, 200 300,400。