博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight开发历程—(绘制矢量图之路径绘图)
阅读量:6163 次
发布时间:2019-06-21

本文共 1489 字,大约阅读时间需要 4 分钟。

 路径(Path)是一种比较特殊的,用开描述比较复杂的元素,它支持绘制从简单到复杂的任意图形绘制能力。

路径标记语法

使用Path 绘图需要使用它的专用路径标记语法(mini-language)。它是一种由路径指令组成的语法,使用mini-language可以产生任何形状的2D图形。下面是路径标记语法(mini-language)所支持的指令:

fillRule

指定该路径使用 EvenOdd 还是 NonZero 填充规则值:

  • F0 指定 EvenOdd 填充规则。

  • F1 指定 Nonzero 填充规则。

如果省略此命令,则路径使用默认行为,即 EvenOdd。如果指定此命令,则必须将其置于最前面。

figureDescription

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

moveCommand drawCommands [ closeCommand ]

moveCommand

用来指定图形起点的,可以用大写M或小写m表示,当用M的时候表示的是绝对值,当用小写m的时候表示的是相对于上一点的偏移量。

drawCommands

一个或多个描绘图形内容的。属于一个指令的集合,用来描述外形轮廓的内容,包含Silverlight中大量的直线和曲线绘图指令。

closeCommand

可选的,用于关闭图形。用来闭合整个Path并在当前结束点与开始点之间画一条张,用z表示。

Data是Path的重要属性,可以用Data来产生不同形状的几何图形,使用时只需要将组合好的指令直接赋给Data,Path会根据Data中的指令来完成绘图指令。

例如:

运行结果:

MoveCommand、DrawCommand、CloseCommand这些指令集组成了mini-language,如图:

M 50,200是MoveCommand移动指令表示起始为是50,200、L150,200是DrawCommand直线指令 L表示线条类型终点是100,50 、z是CloseCommand关闭指令用来封闭整个图形的轮廓。

绘图指令

 

 

下列表是DrawCommand支持的直线和曲线指令:

 

注:当绘制贝塞尔曲线的时候,需要提供三个坐标点,其中前两个坐标点是控制点,第三点是贝塞尔曲线的结束点。

绘制直线和曲线

下面代码利用Path对象来绘制直线和曲线并进行填充:

运行结果:

 

 

例如下代码:

运行结果:

 

上面例子中,分别利用了H、V(v)、l 三个指令集合,大写V与小写v的效果显然区别很大,第一个Path的起始点是H 50,50 所以V 50产生的垂直线条长度就为0。但第二个Path使用的是小写v,而小写v是相对于上一点坐标点做为起始点那么他就产生了一条长50的垂直线条。

PolyLine 、Polygon 和Path三个绘图对象,PolyLine 、Polygon比较简单,而Path则相对比较灵活。

 

补充:有的朋友可能会遇到这种问题,就是在编码过程中无论怎么打,Path对象都打不出来而且生成的时候也会报错。那是因为你的项目中没有添加Path这个控件,那么你需要在工具->右击选择“选择项”->然后在Silverlight组件中找到Path控件,然后勾选上点击确定就可了。如图:

转载地址:http://jxkba.baihongyu.com/

你可能感兴趣的文章
10、程序员和编译器之间的关系
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
图解SSH原理及两种登录方法
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JS图片跟着鼠标跑效果
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
416. Partition Equal Subset Sum
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
C++ 迭代器运算
查看>>