现在的位置: 首页 > 综合 > 正文

Path(路径)标记语法

2013年10月04日 ⁄ 综合 ⁄ 共 3677字 ⁄ 字号 评论关闭
 

Path(路径)标记语法

本主题描述画路径的 Extensible Application Markup Language (XAML) 使用语法,Silverlight 支持强大而复杂的微语言供我们画出几何路径。

本主题包含以下小节:

先决条件

要理解本主题的内容,你应当对 Geometry 对象的基本功能有所了解。更多信息,请参见
Silverlight 几何图形概述

路径微语言

Silverlight 提供微语言属性语法来画出几何路径。当你设置 Geometry 类型的属性时,比如 UIElementClip 属性,或 Path 元素的 Data 属性,你可以使用这种微语言属性语法来画出几何路径。下面的例子使用路径属性语法创建一个基本图形。

XAML
<Canvas 
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Path Stroke="Black" Fill="Gray"
Data="M 10,100 C 10,300 300,-200 300,100" />
</Canvas>

有关空格的说明

为简短起见,这个语法中显示的是单个空格,但是,在单个空格的地方放置多个空格也是可以接受的。

两个数字之间实际上没有必要使用逗号或者空格隔开,但是,这种情况之适用于结果字符串含义明确的时候。例如,2..3 实际上是两个数字:“2.”和“.3.”,类似地,2-3 实际上表示“2”和“-3”。命令前面或后面的空格也不是必要的。

语法

Extensible Application Markup Language (XAML) 路径语法是由一个可选的 FillRule 值和一个或多个图形描述组成的。

路径 XAML 属性使用

<
object property
="[fillRulefigureDescription[figureDescription]*" ... />

 

项目 描述

fillRule

 

指定路径是使用 EvenOdd 还是 NonZero FillRule(填充规则)

  • F0 指定使用 EvenOdd 填充规则;

  • F1 指定使用 Nonzero 填充规则。

如果你省略这个命令,路径使用默认值 EvenOdd。如果你指定了这个命令,你必须将它放在第一位。

figureDescription

由移动命令、画图命令和可选的关闭命令组成的图形。

moveCommand drawCommands
[

closeCommand

]

moveCommand

移动命令指定图形的启动,请参见 移动命令 小节。

drawCommands

一个或多个画图命令画出图形的内容。请参见 画图命令 小节。

closeCommand

可选的关闭命令封闭图形。请参见 关闭命令 小节

移动命令

指定一个图形的起点。

语法

M
startPoint

- 或者 -

m
startPoint

项目 描述

startPoint

Point

一个图形的起点。

大写的 M 表示 startPoint(起点) 是一个绝对值;小写的 m 表示 startPoint 是相对上一个点的偏移值,如果这个点不存在,则这个点为 (0,0) 。如果你在移动命令之后列出多个点,则这些点之间将画出一条线,即使你指定了画线命令。

画图命令


个画图命令可以包含多个形状命令。下面的形状命令使用使用:line(线)、horizontal line(水平线)、vertical
line(垂直线)、cubic Bezier curve(三次贝塞尔曲线)、 quadratic Bezier
curve(二次贝塞尔曲线)、smooth cubic Bezier curve(平滑三次贝塞尔曲线)、smooth quadratic
Bezier curve(平滑二次贝塞尔曲线)和 elliptical arc(椭圆弧)。

你必须使用大写或小写字母输入每个命令;大写字母表示绝对值,小写字母表示相对值;相对于前面例子终点部分的控制点。当连续输入相同类型的多个命令时,你可以省略重复发命令项;例如,L 100,200 300,400L 100,200 L 300,400 是等同的。下表描述了 移动画图 命令。

Line(画线)命令

在当前点和指定的终点直接画一条直线。l 20 30L 20,30 都是有效的 line(画线)命令。

语法

L
endPoint

- or -

l
endPoint

项目 描述

endPoint

 

线段的终点。

Horizontal Line(水平线)命令

在当前点和指定的 x 坐标直接画一条水平线。H 90是合法的画水平线的例子。

语法

H
x

- 或者 -

h
x

项目 描述

x

 

线段终点的 x 坐标。

Vertical Line(垂直线)命令

在当前点和指定的 y 坐标直接画一条垂直线。v 90 就是一个合法的画垂直线的命令。

语法

V
y

- 或者 -

v
y

项目 描述

y

 

线段终点的 y 坐标。

Cubic Bezier Curve(三次贝塞尔曲线)命令

通过两个控制点(controlPoint1controlPoint2)在当前点和指定的终点直接画一条三次贝塞尔曲线。C 100,200 200,400 300,200 是一个合法的曲线命令。

语法

C

controlPoint
1


controlPoint
2


endPoint

- 或者 -

c

controlPoint
1


controlPoint
2


endPoint

项目 描述


controlPoint
1

 

第一个控制点,控制曲线的起始切线。


controlPoint
2

 

第二个控制点,控制曲线的终点切线。


endPoint

 

曲线要画的点。.

Quadratic Bezier Curve(二次贝塞尔曲线)命令

通过指定控制点(controlPoint)在当前点和指定的终点之间画一条二次贝塞尔曲线。q 100,200 300,200 是一个合法的二次贝塞尔曲线的命令。

语法

Q

controlPoint


endPoint

- 或者 -

q

controlPoint


endPoint

项目 描述


controlPoint

 

曲线的控制点,控制曲线的起始和结束切线。


endPoint

 

曲线要画的点。

Smooth cubic Bezier curve (平滑三次贝塞尔曲线)命令


当前点和指定的终点之间画一条贝塞尔曲线。第一个控制点设置为相对于当前点上一个命令第二个控制点的对称点。如果没有上一个命令,或者前一个命令不是一个
三次贝塞尔曲线命令或平滑三次贝塞尔曲线命令,则认为第一个控制点与当前点重合。第二个控制点,也就是曲线的终点控制点,由 controlPoint2 指定。例如, S 100,200 200,300 就是一个合法的平滑三次贝塞尔曲线命令。

语法

S

controlPoint
2


endPoint

- 或者 -

s

controlPoint
2


endPoint

项目 描述


controlPoint
2

 

曲线的控制点,控制曲线的终点切线。


endPoint

 

曲线要画的点

Smooth quadratic Bezier curve (平滑二次贝塞尔曲线)命令

在当前点和指定的终点之间画一条二次贝塞尔曲线。控制点被认为是相对当前点的前一个命令的控制点的对称点。如果没有前面的命令,或者前面的命令不是一个二次贝塞尔曲线或者平滑二次贝塞尔曲线,则控制点与当前点重合。

语法

T

controlPoint


endPoint

- 或者 -

t

controlPoint


endPoint

项目 描述


controlPoint

 

曲线的控制点,控制曲线起始点和切线。


endPoint

 

曲线要画点。

Elliptical Arc (椭圆弧)命令

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

语法

A

size


rotationAngle


isLargeArcFlag


sweepDirectionFlag


endPoint

- 或者 -

a

size


rotationAngle

isLargeArcFlag

sweepDirectionFlag


endPoint

项目 描述


size

Size

弧度 x 和 y 径。


rotationAngle

 

椭圆的旋转角度(以度为单位)。


isLargeArcFlag

如果弧角应当大于 180 度则设置为 1,否则设置为 0。


sweepDirectionFlag

如果弧以正角方向(逆时针方向)画则设置为 1,否则设置为 0。


endPoint

Point

弧度终点。

Close(关闭)命令

结束当前的画图并在当前点和图形的起点之间画一条线段。该命令在图形的最后部分和第一部分之间画一条连接线(角)。

语法

Z

- 或者 -

z

Point(点)语法

描述点的 x 和 y 坐标。

语法


x

,

y

- 或者 -


x
y

项目 描述


x

 

点的 x 坐标。


y

 

点点 y 坐标。

特殊值

如果不使用标准的数字值,你还可以指定下面的特殊值,这些值是大小写敏感的。

Infinity

表示 Double 的正无穷大值。

-Infinity

表示 Double 的负无穷大值。

NaN

表示 Double 的 NaN 值。

你也可以使用科学计数法,例如,+1.e17 就是一个合法的值。

抱歉!评论已关闭.