WPF的XAML提供了一系列功能强大、用法复杂的 mini-language 来描述可扩展应用程序标记语言 (XAML) 中的几何路径。如下所示:

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 x2y2x3 y3

CubicBézier

DrawBézier to (x3, y3) withcontrol points (x1, y1) and (x2, y2).

c x1 y1 x2y2x3 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

图形的起点。

大写的 M 指示 startPoint 是绝对值;小写的 m 指示 startPoint 是相对于上一个点的偏移量,如果是 (0,0),则表示不存在偏移。当您在 move 命令之后列出多个点时,即使您指定的是线条命令,也将绘制出连接这些点的线。

绘制命令

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)。

此外,您还可以使用科学计数法。例如,+1.e17 是有效值。

WPF学习笔记(3):Path绘制命令zz的更多相关文章

  1. matlab学习笔记8 基本绘图命令-特殊图形绘制

    一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

  2. matlab学习笔记8 基本绘图命令-三维绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...

  3. Hadoop源码学习笔记(6)——从ls命令一路解剖

    Hadoop源码学习笔记(6) ——从ls命令一路解剖 Hadoop几个模块的程序我们大致有了点了解,现在我们得细看一下这个程序是如何处理命令的. 我们就从原头开始,然后一步步追查. 我们先选中ls命 ...

  4. WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决

    原文:WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决 如下图,在凭证编辑窗体中,有的单元格不需要数字,但如果录入数字后再删除,会触发数字验证,单元格显示红色框线,导致不能执行 ...

  5. matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色

    一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...

  6. matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象

    一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...

  7. matlab学习笔记8 基本绘图命令-初级二维绘图/交互式绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_5 初级二维绘图/交互式绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用&g ...

  8. matlab学习笔记8 基本绘图命令-LineSpec线条设定

    一起来学matlab-matlab学习笔记8 基本绘图命令_4 LineSpec线条设定 觉得有用的话,欢迎一起讨论相互学习~Follow Me 绘图函数接受线条设定作为参数并相应地修改生成的图形.您 ...

  9. WPF学习笔记-用Expression Design制作矢量图然后导出为XAML

    WPF学习笔记-用Expression Design制作矢量图然后导出为XAML 第一次用Windows live writer写东西,感觉不错,哈哈~~ 1.在白纸上完全凭感觉,想象来画图难度很大, ...

随机推荐

  1. 【转】深入Windows内核——C++中的消息机制

    上节讲了消息的相关概念,本文将进一步聊聊C++中的消息机制. 从简单例子探析核心原理 在讲之前,我们先看一个简单例子:创建一个窗口和两个按钮,用来控制窗口的背景颜色.其效果 图1.效果图  Win32 ...

  2. 数据结构之Dijkstra算法

    基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算). 此外,引进两个集合S和U.S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求 ...

  3. CentOS出错You don't have permission to access on this server

    之前配置phpmyadmin的时候,在浏览器上输入http://192.168.8.250/phpmyadmin/ 也遇到了You don't have permission to access on ...

  4. 【JAVA网络流之浏览器与服务器模拟】

    一.模拟服务器获取浏览器请求http信息 代码: package p06.TCPTransferImitateServer.p01.ImitateServer; import java.io.IOEx ...

  5. 深入理解JavaScript定时机制和定时器注意问题

    容易欺骗别人感情的JavaScript定时器 JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不 ...

  6. log4j设置日志格式为UTF-8

    想要log4j输出的日志文件的编码格式为UTF-8.正常情况下只需要添加下述的代码即可: log4j.appender.appender_name.Encoding=UTF-8 但是在spring与l ...

  7. Ubuntu下Chromium for Android 源码的编译

    转自:http://blog.csdn.net/leer168/article/details/9146689 一.环境Ubuntu10.4.4 -desktop-amd64 + VMware Wor ...

  8. PMP 第六章 项目时间管理

    定义活动 排列活动顺序 估算活动资源 估算活动持续时间 制定进度计划 控制进度计划 1.进度管理计划和进度计划的内容分别是什么,有什么区别? 进度计划:项目各活动计划完成日期的编排.    进度管理计 ...

  9. 通过SharePoint Designer对SharePoint 2010的Master Page进行自定制

    1:需要在对应的SiteCollection 和 Site 中开启Publishing的服务 2:在Designer中创建自己的Master Page,进行对原始v4.master代码进行复制,和修改 ...

  10. UI中 frame 与 transform的用法与总结

    在iOS中,我们是不可以直接访问控件中frame的结构体的成员的,因此我们需要分三步来改变一个UI控件的位置,大小 一.frame用法 frame的结构体类型为: struct CGRect { CG ...