Xamarin.Forms Path 标记语法使你能够在 XAML 中紧凑地指定路径几何图形。 该语法指定为 Path.Data 属性的字符串值:
<Path Stroke="Black"
      Data="M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z" />
路径标记语法由可选的 FillRule 值和一个或多个图形说明组成。 此语法可以表示为:<Path Data="[fillRule] figureDescription [figureDescription] * " ... />
在此语法中:
- fillRule 是一个可选 
Xamarin.Forms.Shapes.FillRule选项,指定几何图形是否应使用EvenOdd或NonzeroFillRule。F0用于指定EvenOdd填充规则,而F1用于指定Nonzero填充规则。 有关填充规则的详细信息,请参阅 Xamarin.Forms 形状:填充规则。 - figureDescription 表示由移动命令、绘制命令和可选的关闭命令组成的图形。 移动命令用于指定图形的起点。 绘制命令的作用是描述图形的内容,可选的关闭命令则用于关闭图形。
 
在上面的示例中,路径标记语法使用移动命令 (M) 指定起点,使用直线命令 (L) 指定一系列直线,并使用关闭命令 (Z) 关闭路径。
在路径标记语法中,无需在命令前后加空格。 此外,两个数字之间不必用逗号或空格分隔,但仅在字符串含义明确时可以这样做。
提示
路径标记语法与可扩展矢量图形 (SVG) 图像路径定义兼容,因此可用于从 SVG 格式移植图形。
虽然路径标记语法被设计为在 XAML 中使用,但可以通过调用 PathGeometryConverter 类中的 ConvertFromInvariantString 方法将其转换为代码中的 Geometry 对象:
Geometry pathData = (Geometry)new PathGeometryConverter().ConvertFromInvariantString("M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z");
移动命令
移动命令指定新图形的起点。 此命令的语法为:M startPoint 或 m startPoint。
在此语法中,startPoint 是一个 Point 结构,用于指定新图形的起点。 如果在移动命令之后列出多个点,可以绘制一条连接这些点的直线。
M 10,10 是一个有效移动命令的示例。
绘制命令
绘制命令可以由几个形状命令组成。 以下是可供使用的绘制命令:
- 直线(
L或l)。 - 水平线(
H或h)。 - 垂直线(
V或v)。 - 椭圆弧线(
A或a)。 - 三次贝塞尔曲线(
C或c)。 - 二次贝塞尔曲线(
Q或q)。 - 平滑三次贝塞尔曲线(
S或s)。 - 平滑二次贝塞尔曲线(
T或t)。 
每个绘制命令都用不区分大小写的字母指定。 当按顺序输入多个相同类型的命令时,可以省略重复的命令输入。 例如,L 100,200 300,400 等效于 L 100,200 L 300,400。
直线命令
直线命令会在当前点和指定的终点之间创建一条直线。 此命令的语法为:L endPoint 或 l endPoint。
在此语法中,endPoint 是表示直线终点的 Point。
L 20,30 和 L 20 30 是有效直线命令的示例。
有关将直线创建为 PathGeometry 对象的信息,请参阅创建 LineSegment。
横线命令
水平线命令可在当前点和指定的 X 坐标之间创建一条水平线。 此命令的语法为:H x 或 h x。
在此语法中,x 是一个 double,表示直线终点的 X 坐标。
H 90 是有效水平线命令的示例。
竖线命令
垂直线命令可在当前点和指定的 y 坐标之间创建一条垂直线。 此命令的语法为:V y 或 v y。
在此语法中,y 是一个 double,表示直线终点的 Y 坐标。
V 90 是有效竖线命令的示例。
椭圆弧命令
椭圆弧线命令可在当前点和指定终点之间创建椭圆弧线。 此命令的语法为:A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint 或 a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint。
在此语法中:
size是表示弧线 x 和 y 半径的Size。rotationAngle是表示椭圆旋转量(以度为单位)的double。- 如果圆弧角度应为 180 度或更大,请将 
isLargeArcFlag设置为 1,否则设置为 0。 - 如果以正角方向绘制圆弧,请将 
sweepDirectionFlag设置为 1,否则设置为 0。 endPoint是绘制弧线的Point。
A 150,150 0 1,0 150,-150 是有效椭圆弧线命令的示例。
有关将椭圆弧线创建为 PathGeometry 对象的信息,请参阅创建 ArcSegment。
三次贝塞尔曲线命令
三次贝塞尔曲线命令会通过使用两个指定的控制点,在当前点和指定的终点之间创建三次贝塞尔曲线。 此命令的语法为:C controlPoint1 controlPoint2 endPoint 或 c controlPoint1 controlPoint2 endPoint。
在此语法中:
- controlPoint1 是 
Point,表示曲线的第一个控制点,它决定曲线的起始切线。 - controlPoint2 是 
Point,表示曲线的第二个控制点,它决定曲线的结束切线。 - endPoint 是 
Point,表示绘制曲线的点。 
C 100,200 200,400 300,200 是有效三次贝塞尔曲线命令的示例。
有关将三次贝塞尔曲线创建为 PathGeometry 对象的信息,请参阅创建 BezierSegment。
二次贝塞尔曲线命令
二次贝塞尔曲线命令会通过使用指定的控制点,在当前点和指定的终点之间创建二次贝塞尔曲线。 此命令的语法为:Q controlPoint endPoint 或 q controlPoint endPoint。
在此语法中:
Q 100,200 300,200 为有效二次贝塞尔曲线命令的示例。
有关将二次贝塞尔曲线创建为 PathGeometry 对象的信息,请参阅创建 QuadraticBezierSegment。
平滑三次贝塞尔曲线命令
平滑三次贝塞尔曲线命令会通过使用指定的控制点,在当前点和指定的终点之间创建三次贝塞尔曲线。 此命令的语法为:S controlPoint2 endPoint 或 s controlPoint2 endPoint。
在此语法中:
假设第一控制点为相对当前点前一命令的第二控制点的反射。 如果没有前一命令,或者前一命令不是三次贝塞尔曲线命令或平滑三次贝塞尔曲线命令,则假设第一个控制点与当前点重合。
S 100,200 200,300 是有效平滑三次贝塞尔曲线命令的示例。
平滑二次贝塞尔曲线命令
平滑二次贝塞尔曲线命令会通过使用控制点,在当前点和指定的终点之间创建二次贝塞尔曲线。 此命令的语法为:T endPoint 或 t endPoint。
在此语法中,endPoint 是 Point,表示绘制曲线的点。
假设控制点为相对于当前点前一命令的控制点的反射。 如果没有前一命令,或者前一命令不是二次贝塞尔曲线命令或平滑二次贝塞尔曲线命令,则假设控制点与当前点重合。
T 100,30 是有效平滑二次贝塞尔曲线命令的示例。
关闭命令
关闭命令会结束当前图形,并创建一条将当前点连接到图形起点的直线。 因此,此命令可以在图形最后一段与第一段之间创建一条连接线。
关闭命令的语法是:Z 或 z。
其他值
除了标准数值外,还可使用以下区分大小写的特殊值:
Infinity表示double.PositiveInfinity。-Infinity表示double.NegativeInfinity。NaN表示double.NaN。
此外,还可以使用不区分大小写的科学记数法。 因此,+1.e17 是有效值。