WPF学习笔记(3):Path绘制命令
2009-05-15 10:06
866 查看
WPF的XAML提供了一系列功能强大、用法复杂的 mini-language 来描述可扩展应用程序标记语言 (XAML) 中的几何路径。如下所示:
XAML
<Canvas>
<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”。
命令前后的空格也不是必需的。
移动命令
指定新图形的起点。
大写的 M 指示 startPoint 是绝对值;小写的 m 指示 startPoint 是相对于上一个点的偏移量,如果是 (0,0),则表示不存在偏移。当您在 move 命令之后列出多个点时,即使您指定的是线条命令,也将绘制出连接这些点的线。
绘制命令
draw 命令可以由若干个形状命令组成。提供以下形状命令:直线、水平线、垂直线、三次方贝塞尔曲线、二次贝塞尔曲线、平滑的三次方贝塞尔曲线、平滑的二次贝塞尔曲线和椭圆弧线。
通过使用一个大写或小写字母输入各命令:其中大写字母表示绝对值,小写字母表示相对值。线段的控制点是相对于上一线段的终点而言的。依次输入多个同一类型的命令时,可以省略重复的命令项;例如,L 100,200 300,400 等同于 L 100,200 L 300,400。
关闭命令
close 命令终止当前的图形并创建一条连接当前点和图形起点的线。此命令在图形的最后一个线段与第一个线段之间创建一条连线(转角)。
点语法
点语法描述点的 x 坐标和 y 坐标。
特殊值
除标准数值以外,您还可以使用以下特殊值。这些值区分大小写。
此外,您还可以使用科学计数法。例如,+1.e17 是有效值。
XAML
<Canvas>
<Path Stroke="Black" Fill="Gray"
Data="M 10,100 C 10,300 300,-200 300,100" />
</Canvas>
Command | Name | Description |
F i | FillRule | i=0:EvenOdd. i=1:NonZero. |
M x y | Move | Moveto (x, y). |
m x y | Relative move | Moveto (x0+x, y0+y). |
L x y | Line | Drawline to (x, y). |
l x y | Relative line | Drawline to (x0+x, y0+y). |
H x | Horizontal line | Drawline to (x, y0). |
h x | Relative horizontal line | Drawline to (x0+x, y0). |
V y | Vertical line | Drawline to (x0, y). |
v y | Relative vertical line | Drawline to (x0, y0+y). |
A xr yr a i j x y | Arc | Drawarc to (x, y) based on ellipse with radii (xr,yr) rotated a degrees. i=1:IsLargeArc. j=1: Clockwise. |
a xr yr a i j x y | Relative arc | Drawarc to (x0+x, y0+y). |
C x1 y1 x2y2 x3 y3 | CubicBézier | DrawBézier to (x3, y3) withcontrol points (x1, y1) and (x2, y2). |
c x1 y1 x2y2 x3 y3 | Relative cubic Bézier | DrawBézier to (x0+x3,y0+y3) with control points (x0+x1, y0+y1) and (x0+x2, y0+y2). |
S x2 y2 x3 y3 | Smooth cubic Bézier | DrawBézier to (x3, y3) with reflected control point and (x2, y2). |
s x2 y2 x3y3 | Relative smooth cubic Bézier | DrawBézier to (x0+x3,y0+y3) with reflected control point and (x0+x2, y0+y2). |
Q x1 y1 x2y2 | Quadratic Bézier | Drawquadratic Bézier to (x2, y2)with control point (x1, y1). |
q x1 y1 x2y2 | Relative quadratic Bézier | Drawquadratic Bézier to (x0+x2,y0+y2) with control point(x0+x1, y0+y1). |
Z z | Closefigure |
分隔符和空白
为简洁起见,下文中的语法部分显示的是单个空格,实际上在使用单个空格的地方也可以使用多个空格。如果结果字符串比较明确,则无需使用逗号或空白将两个数字隔开。例如,2..3 解释为两个数字:“2.”和“.3”。同样,2-3 包含两个数字:“2”和“-3”。
命令前后的空格也不是必需的。
语法
XAML 路径语法由一个可选的 FillRule 值以及一个或多个图形说明组成。路径 XAML 属性用法 |
---|
<对象属性 ="[fillRule] figureDescription[ figureDescription]*" ... /> |
术语 | 说明 |
---|---|
fillRule | FillRule 指定该路径使用 EvenOdd 还是 NonZero 填充规则值: F0 指定 EvenOdd 填充规则。 F1 指定 Nonzero 填充规则。 如果省略此命令,则路径使用默认行为,即 EvenOdd。如果指定此命令,则必须将其置于最前面。 |
figureDescription | 图形由移动命令、绘制命令和可选的关闭命令组成。 moveCommand drawCommands [ closeCommand ] |
moveCommand | 指定图形起点的移动命令。 |
drawCommands | 一个或多个描绘图形内容的绘制命令。 |
closeCommand | 可选的关闭命令,用于关闭图形。 |
移动命令
指定新图形的起点。
语法 |
---|
M startPoint - 或 - m startPoint |
术语 | 说明 |
---|---|
startPoint | Point 图形的起点。 |
绘制命令
draw 命令可以由若干个形状命令组成。提供以下形状命令:直线、水平线、垂直线、三次方贝塞尔曲线、二次贝塞尔曲线、平滑的三次方贝塞尔曲线、平滑的二次贝塞尔曲线和椭圆弧线。
通过使用一个大写或小写字母输入各命令:其中大写字母表示绝对值,小写字母表示相对值。线段的控制点是相对于上一线段的终点而言的。依次输入多个同一类型的命令时,可以省略重复的命令项;例如,L 100,200 300,400 等同于 L 100,200 L 300,400。
直线命令
在当前点与指定的终点之间创建一条直线。l 20 30 和 L 20,30 都是有效的 line 命令示例。语法 |
---|
L endPoint - 或 - l endPoint |
术语 | 说明 |
---|---|
endPoint | Point 直线的终点。 |
水平线命令
在当前点与指定的 x 坐标之间创建一条水平线。H 90 是有效的水平线命令示例。语法 |
---|
H x - 或 - h x |
术语 | 说明 |
---|---|
x | Double 线的终点的 x 坐标。 |
垂直线命令
在当前点与指定的 y 坐标之间创建一条垂直线。v 90 是有效的垂直线命令示例。语法 |
---|
V y - 或 - v y |
术语 | 说明 |
---|---|
y | Double 线的终点的 y 坐标。 |
三次方贝塞尔曲线命令
通过使用两个指定的控制点(controlPoint1 和 controlPoint2)在当前点与指定的终点之间创建一条三次方贝塞尔曲线。C 100,200 200,400 300,200 是有效的曲线命令示例。语法 |
---|
C controlPoint1 controlPoint2 endPoint - 或 - c controlPoint1 controlPoint2 endPoint |
术语 | 说明 |
---|---|
controlPoint1 | Point 曲线的第一个控制点,用于确定曲线的起始正切值。 |
controlPoint2 | Point 曲线的第二个控制点,用于确定曲线的终止正切值。 |
endPoint | Point 曲线将绘制到的点。 |
二次贝塞尔曲线命令
通过使用指定的控制点 (controlPoint) 在当前点与指定的终点之间创建一条二次贝塞尔曲线。q 100,200 300,200 是有效的二次贝塞尔曲线命令示例。语法 |
---|
Q controlPoint endPoint - 或 - q controlPoint endPoint |
术语 | 说明 |
---|---|
controlPoint | Point 曲线的控制点,用于确定曲线的起始和终止正切值。 |
endPoint | Point 曲线将绘制到的点。 |
平滑的三次方贝塞尔曲线命令
在当前点与指定的终点之间创建一条三次方贝塞尔曲线。第一个控制点假定为前一个命令的第二个控制点相对于当前点的反射。如果前一个命令不存在,或者前一个命令不是三次方贝塞尔曲线命令或平滑的三次方贝塞尔曲线命令,则假定第一个控制点就是当前点。第二个控制点,即曲线终端的控制点,由 controlPoint2 指定。例如,S 100,200 200,300 是一个有效的平滑三次方贝塞尔曲线命令。语法 |
---|
S controlPoint2 endPoint - 或 - s controlPoint2 endPoint |
术语 | 说明 |
---|---|
controlPoint2 | Point 曲线的控制点,用于确定曲线的终止正切值。 |
endPoint | Point 曲线将绘制到的点。 |
平滑的二次贝塞尔曲线命令
在当前点与指定的终点之间创建一条二次贝塞尔曲线。控制点假定为前一个命令的控制点相对于当前点的反射。如果前一个命令不存在,或者前一个命令不是二次贝塞尔曲线命令或平滑的二次贝塞尔曲线命令,则此控制点就是当前点。语法 |
---|
T controlPoint endPoint - 或 - t controlPoint endPoint |
术语 | 说明 |
---|---|
controlPoint | Point 曲线的控制点,用于确定曲线的起始正切值。 |
endPoint | Point 曲线将绘制到的点。 |
椭圆弧线命令
在当前点与指定的终点之间创建一条椭圆弧线。语法 |
---|
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint - 或 - a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint |
术语 | 说明 |
---|---|
大小 | x, y pair 弧线的 x 轴半径和 y 轴半径。 |
rotationAngle | Double 椭圆的旋转度数。 |
isLargeArcFlag | 如果弧线的角度应大于或等于 180 度,则设置为 1;否则设置为 0。 |
sweepDirectionFlag | 如果弧线按照正角方向绘制,则设置为 1;否则设置为 0。 |
endPoint | Point 弧线将绘制到的点。 |
关闭命令
close 命令终止当前的图形并创建一条连接当前点和图形起点的线。此命令在图形的最后一个线段与第一个线段之间创建一条连线(转角)。
语法 |
---|
Z - 或 - z |
点语法
点语法描述点的 x 坐标和 y 坐标。
语法 |
---|
x , y - 或 - x y |
术语 | 说明 |
---|---|
x | Double 点的 x 坐标。 |
y | Double 点的 y 坐标。 |
特殊值
除标准数值以外,您还可以使用以下特殊值。这些值区分大小写。
值 | 说明 |
---|---|
Infinity | 表示正无穷大的 Double 值 (Double..::.PositiveInfinity)。 |
-Infinity | 表示负无穷大的 Double 值 (Double..::.NegativeInfinity)。 |
NaN | 表示 NaN Double 值 (Double..::.NaN)。 |
相关文章推荐
- WPF学习笔记(3):Path绘制命令zz
- WPF and Silverlight 学习笔记(二十七):基本图形的使用(2)Path和位图操作
- WPF的Binding (path)学习笔记(一)
- 【WPF】Path绘制的迷你命令
- WPF and Silverlight 学习笔记(十五):WPF命令(Commands)
- WPF and Silverlight 学习笔记(十五):WPF命令(Commands)
- WPF and Silverlight 学习笔记(十五):WPF命令(Commands)
- WPF and Silverlight 学习笔记(二十七):基本图形的使用(2)Path和位图操作
- WPF and Silverlight 学习笔记(十五):WPF命令(Commands)
- linux文件查找命令(学习笔记)
- 【转载】wpf学习笔记2
- Linux命令学习笔记(二):系统管理,磁盘管理
- MongoDB 学习笔记二 CRUD操作 及常用命令
- Linux学习笔记----文件处理命令----touch ---创建文件
- MySql 基础学习笔记 1——概述与基本数据类型: 整型: 1)TINYINT 2)SMALLINT 3) MEDIUMINT 4)INT 5)BIGINT 主要是大小的区别 图 浮点型:命令
- linux学习笔记--cut命令
- Linux学习笔记:2.文件系统的管理命令(2)
- wpf学习笔记 数据转换
- Linux 学习笔记--不熟悉的命令 (一)
- [转]WPF 学习笔记-在WPF下创建托盘图标