路径标记语法

路径在WPF中的形状和基本绘图概述和几何概述中进行了讨论,但是,本主题详细介绍了可用于使用 更简洁地指定路径几何图形的强大而复杂的微型语言 可扩展应用程序标记语言 (XAML) 。

必备条件

若要了解本主题,应熟悉 对象的基本 Geometry 功能。 有关详细信息,请参阅 Geometry 概述

StreamGeometry and PathFigureCollection Mini-Languages

WPF 提供了两个类,它们提供用于描述几何路径的微型语言: StreamGeometryPathFigureCollection

从前面的示例中可以看出,两种微型语言非常相似。 在可以使用 的任何情况下,始终可以使用 PathGeometry StreamGeometry ;因此,应该使用哪一种? 创建 StreamGeometry 路径后不需要修改路径时,请使用 ;如果需要修改路径,请使用 PathGeometry

有关 和 对象之间的差异详细信息 PathGeometry StreamGeometry ,请参阅 Geometry 概述

有关空格的注意事项

为简洁起见,随后的语法部分中显示一个空格,但在显示一个空格的地方,多个空格也可以接受。

两个数字实际上不必用逗号或空格分隔,但只能在生成的字符串明确时完成。 例如, 实际上是 2..3 两个数字:"2"。 和“.3”。 同样, 2-3 为"2"和"-3"。 命令前面或后面也无需加空格。

语法

可扩展应用程序标记语言 (XAML)的属性用法语法 StreamGeometry 由可选值和一 FillRule 个或多个图形说明组成。

StreamGeometry XAML 属性用法
<object 属性[ ] =" [ fillRule figureDescription figureDescription ]*" ... />

可扩展应用程序标记语言 (XAML)的属性用法语法 PathFigureCollection 由一个或多个图形说明组成。

PathFigureCollection XAML Attribute Usage
<object 属性 =" figureDescription [ figureDescription ]*" ... />
术语 说明
fillRule System.Windows.Media.FillRule

指定 是 StreamGeometry 使用 还是 EvenOdd Nonzero FillRule

- F0 指定填充 EvenOdd 规则。
- F1 指定填充 Nonzero 规则。

如果省略此命令,则子路径将使用默认行为,即 EvenOdd 。 如果指定该命令,须先设置命令。
figureDescription 图形由一个移动命令,绘制命令和一个可选的关闭命令组成。

moveCommand drawCommands [ closeCommand ]
moveCommand 用于指定图形起点的移动命令。 请参阅 移动命令 部分。
drawCommands 用于描述图形内容的一个或多个绘图命令。 请参阅 "绘制命令" 部分。
closeCommand 用于关闭图形的可选关闭命令。 请参阅 "关闭命令" 部分。

移动命令

指定新图形的起点。

语法
MstartPoint

- 或 -

mstartPoint
术语 说明
startPoint System.Windows.Point

新图形的起点。

大写表示 是绝对值;小写表示是上一个点的偏移量;如果不存在,则 (M startPoint m startPoint 0,0) 0。 如果在移动命令之后列出多个点,可以绘制一条连接到这些点的直线,尽管已指定了直线命令。

绘制命令

绘制命令可以由几个形状命令组成。 以下形状命令可用:直线、水平线、竖线、三次贝塞尔曲线、二次贝塞尔曲线、平滑三次贝塞尔曲线、平滑二次贝塞尔曲线和椭圆弧。

可以使用大写或小写字母输入每个命令:大写字母表示绝对值,小写字母表示相对值:该线段的控制点相对于前面示例的终点。 当按顺序输入同一类型的多个命令时,可以省略重复的命令条目;例如, L 100,200 300,400 等效于 L 100,200 L 300,400 。 下表介绍了移动 和****绘制 命令。

直线命令

在当前点和指定的终点之间创建一条直线。 l 20 30``L 20,30和 是有效行 命令 的示例。

语法
LendPoint

- 或 -

lendPoint
术语 说明
端点 System.Windows.Point

线条的终点。

大写表示 是绝对值;小写表示是上一个点的偏移量;如果不存在,则 (L endPoint l endPoint 0,0) 0。

水平线命令

在当前点和指定的 x 坐标之间创建一条水平线。 H 90 是有效水平线命令的示例。

语法
H x

- 或 -

h X
术语 说明
x System.Double

线条终点的 x 坐标。

大写表示 是绝对值;小写表示是上一个点的偏移量;如果不存在,则 (H x h x 0,0) 0。

竖线命令

在当前点和指定的 y 坐标之间创建一条竖线。 v 90 是有效竖线命令的示例。

语法
V Y

- 或 -

v Y
术语 说明
y System.Double

直线终点的 y 坐标。

大写表示 是绝对值;小写表示是上一个点的偏移量;如果不存在,则 (V y v y 0,0) 0。

三次贝塞尔曲线命令

使用 1 和 2 指定的两个指定控制点,在当前点和指定终点之间创建三次贝塞尔曲线 (1 和 controlPoint controlPoint 2) 。 C 100,200 200,400 300,200 是有效曲线命令的示例。

语法
C``controlPoint1 controlPoint 2endPoint

- 或 -

c``controlPoint1 controlPoint 2endPoint
术语 说明
controlPoint1 System.Windows.Point

曲线的第一个控制点,它决定曲线的起始切线。
controlPoint2 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``controlPoint2endPoint

- 或 -

s``controlPoint2endPoint
术语 说明
controlPoint2 System.Windows.Point

曲线的控制点,它决定曲线的结束切线。
endPoint System.Windows.Point

绘制曲线将通过的点。

平滑二次贝塞尔曲线命令

在当前点和指定的终点之间创建二次贝塞尔曲线。 假设控制点为相对于当前点前一命令的控制点的反射。 如果没有前一命令或如果前一命令不是二次贝塞尔曲线命令或平滑二次贝塞尔曲线命令,则控制点与当前点重合。

语法
T endPoint

- 或 -

t endPoint
术语 说明
endPoint System.Windows.Point

绘制曲线将通过的点。

椭圆弧命令

在当前点和指定的终点之间创建一个椭圆弧。

语法
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

- 或 -

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
术语 说明
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 坐标。

特殊值

除了标准数值外,还可使用以下特殊值。 这些值区分大小写。

无穷大
表示 Double.PositiveInfinity

-Infinity
表示 Double.NegativeInfinity

NaN
表示 Double.NaN

也可使用科学计数法。 例如,+1.e17 是有效值。

另请参阅