Path的Data数据有下面几种生成方式:
- 来自其它矢量图。比如使用 ExpressionDesign,就可以直接粘贴来自其它软件的矢量图形,然后选择导出,导出时做如后选择:文件->导出->导出属性->格式->XAMLSilverlight 画布,即可得到XAML格式的矢量图形,也就是Path。
- 使用转换路径,比如,我们要把文字转成图形,相当于印刷行业里的文字转曲,可以直接用 ExpressionBlend。选中对象->路径->转换为路径,即可。
- 自己动手写。当然这也是最难的方式。不过对于简单图形来说非常有用。用Design生成的数据量很大,手写就会变得很简洁。这篇博客就是要介绍Path命令的格式,以及如何写一些简单的Path。
首先是Path命令列表
下面这个地址有详细描述,Silverlight路径标记语法,我下面用表格的方式给出,更直观点。
说明:
- 下面命令中,语法部分显示的是单个空格,实际上使用单个空格的地方也可以使用多个空格;
- 命令前后的空格也不是必须的;
- 如果结果字符串比较明确,则无需使用逗号或空白将两个数字隔开。例如,2..3 解释为两个数字:"2."和".3"。同样,2-3包含两个数字:"2"和"-3"。
- 下面的命令中,绝大多数大写表示绝对值,小写表示相对于前一点的值。
或
m x,y
大写的 M 指示 x,y 是绝对值;
小写的 m 指示 x,y 是相对于上一个点的偏移量,如果是 (0,0),则表示不存在偏移。
当您在 move 命令之后列出多个点时,即使您指定的是线条命令,也将绘制出连接这些点的线。
(Draw Command)
通过使用一个大写或小写字母输入各命令:
其中大写字母表示绝对值,
小写字母表示相对值。
线段的控制点是相对于上一线段的终点而言的。
依次输入多个同一类型的命令时,可以省略重复的命令项;
例如,L 100,200 300,400 等同于 L 100,200 L 300,400。
直线:Line(L)
L 结束点坐标
或:
l 结束点坐标。
坐标值可以使用x,y(中间用英文逗号隔开)或x y(中间用半角空格隔开)的形式。
水平直线: Horizontal line(H)
H x值
或
h x值
(x为System.Double类型的值)
比如:H 100或h 100,也可以是:H 100.00或h 100.00等形式。
垂直直线: Vertical line(V)
或
v y值
(y为System.Double类型的值)
比如:V 100或y 100,也可以是:V 100.00或v 100.00等形式。
三次方程式贝塞尔曲线:
Cubic Bezier curve(C)
或
c 第一控制点 第二控制点 结束点
比如:C 100,200 200,400 300,200 或 c 100,200
其中,点(100,200)为第一控制点,点(200,400)为第二控制点,点(300,200)为结束点。
二次方程式贝塞尔曲线:
Quadratic Bezier curve(Q)
或
q 控制点 结束点
比如:q 100,200。其中,点(100,200)为控制点,点(300,200)为结束点。
平滑三次方程式贝塞尔曲线:
Smooth cubic Bezier curve(S)
或
s 控制点 结束点
比如:S 100,300
平滑二次方程式贝塞尔曲线:
smooth quadratic Bezier curve(T)
或
t 控制点 结束点
比如:T 100,300
或:
a 尺寸 圆弧旋转角度值 优势弧的标记 正负角度标记 结束点
在当前点与指定结束点间绘制圆弧。
- 尺寸(Size):System.Windows.Size类型,指定椭圆圆弧X,Y方向上的半径值。
- 旋转角度(rotationAngle):System.Double类型。
- 圆弧旋转角度值(rotationAngle):椭圆弧的旋转角度值。
- 优势弧的标记(isLargeArcFlag):是否为优势弧,如果弧的角度大于等于180度,则设为1,否则为0。
- 正负角度标记(sweepDirectionFlag):当正角方向绘制时设为1,否则为0。
- 结束点(endPoint):System.Windows.Point类型。
比如:A 5,5 0 0 1 10,10
可选的关闭命令
如果省略此命令,则路径使用默认行为:即 EvenOdd。
如果指定此命令,则必须将其置于最前面。>
一些简单例子:
Xaml 文件
<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"x:Class="SilverlightApplication_Test.MainPage"Width="640"Height="500"><CanvasBackground="Black"><!-- 1 //--><Pathstroke="BlanchedAlmond"Data="M101,95 L269,95"/><!-- 2 //--><Pathstroke="Blue"Data="m101,95 l269,95"/><!-- 3 //--><Pathstroke="BlanchedAlmond"Data="M101,95 58,54 60,38"/><!-- 4 //--><Pathstroke="BurlyWood"Data="M30,185 H100"/><!-- 5 //--><Pathstroke="BurlyWood"Data="M30,185 v100"/></Canvas></UserControl>
Xaml 文件
<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"x:Class="SilverlightApplication_Test.MainPage"Width="640"Height="500"><CanvasBackground="Black"><!-- 1 //--><Pathstroke="AliceBlue"Data="M 150,50 c 80,3 8,60 120,30"/><!-- 2 //--><Pathstroke="Aqua"Data="M 70,150 Q 80,30 120,90"/><!-- 3 //--><Pathstroke="Azure"Data="M 90,150 s 118,3 190,90"/><!-- 4 //--><Pathstroke="Rosybrown"Data="M 350,110 t10,20 32,10"/><!-- 5 //--><Pathstroke="Red"Data="M 90,180 a 2 3 8 1 0 29,90"/></Canvas></UserControl>
Xaml 文件
<UserControlxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"x:Class="SilverlightApplication_Test.MainPage"Width="640"Height="500"><CanvasBackground="Black"><!-- 1 //--><Pathstroke="AliceBlue"Data="F0 M 150,50 c 5,30 8,30 z"/><!-- 2 //--><Pathstroke="Red"Data="F1 M 95,90z"/></Canvas></UserControl>
执行效果,
更复杂的,建议还是用前2种方法吧。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。