理解Silverlight的路径填充规则

这个可以扩展到矢量图中路径的填充规则,因为所有矢量图都采用这个规则来填充封闭路径的内部,在这里只以Silverlight为例。

在网上找了很久关于填充规则的介绍,经过了几天的阅读和自己理解还有亲自尝试,现在终于能说出过所以然来了,立马分享给大家。

 

矢量路径的填充规则有两种方式,EvenOdd 和 NonZero,下面是我自己总结的中文解释(挺拗口的)。

 

EvenOdd 方式是指从路径内部到外部经过了与路径有偶数个交叉点的那些点被认为在路径之外,有奇数个交叉点的那些点被认为在路径之内并且会被填充

 

NonZero 方式是指从路径内部到外部经过的那些路径中从左到右和从右到左的数量不相同(差不为0)的那些点会被填充

 

事实上并没有那么复杂,来看一个实际的例子吧:

 

1<Path Fill="Yellow"
2  Stroke="Blue" StrokeThickness="3"
3  Data="F1 M 420,200 L 750,200 L 460,300 L 650,100 L 550,350 L 450,150 L 700,350 L 550,150 Z"
4/>

 

 运行之后的图形如下,顶点作了标记:

 

 

注意上图是NonZero填充。图中A点向外部可以看出经过了2个从左到右(3->4, 5->6,这里方向是从1到9。你也可以从9到1算方向)的路径,但没经过从右到左的路径,所以这两个值的差不为0,所以A点应该被填充。

 

下面是默认的EvenOdd填充效果:

 

 

A点向外经过了2个与路径的交叉点,所以被认为在路径之外,所以就不填充。你也可以向反方向画线,但仍然是偶数个交叉点

 

PS,Path的Data里的命令是区分大小写的,带坐标的命令如果是大写,则用绝对坐标,小写则用相对坐标,要注意噢!


转载于:https://www.cnblogs.com/shinyzhu/archive/2008/07/27/1254194.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PowerDesigner

PowerDesigner简介   PowerDesigner是Sybase公司的CASE工具集&#xff0c;使用它可以方便地对管理信息系统进行分析设计&#xff0c;它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型&#xff0c;可以生成多种客户端开…

call,apply,bind的区别

1转载于:https://www.cnblogs.com/YangJonathan/p/11223641.html

Fotolog对memcached的应用

Fotolog在21台server上部署了51个memcached实例&#xff0c;使用了175G&#xff0c;剩余254G。他们对待缓存的策略是&#xff1a;缓存所有在查询、获取和计算上慢的东西。 几种应用类型: Non-Deterministic Cache&#xff1a; 最常用的存储需要read的数据。平均每个memcached实…

Windows Azure 将正式更名为 Microsoft Azure

微软的公共云平台在2014年4月3日正式从Windows Azure 更名为Microsoft Azure。 windows azure是二级产品名&#xff0c;microsoft azure是一级产品名&#xff0c;和microsoft office、microsoft windows同级别。相当于是把云从windows系里剥离出来。所以微软现在的产品线应该是…

引入外部js如何通知页面其编码格式

快来java1234 吧 js中如何设置编码格式 <script type"text/javascript" src"xxx" charset"utf-8"></script> 只能使用在引入外部js文件时&#xff0c;可以声明编码格式&#xff0c;对行内脚本无效&#xff1b; 转载于:https://www.c…

java——Runtime

一、Runtime类&#xff1a;代表着Java程序的运行时环境&#xff1b; 每个Java程序都有一个Runtime实例&#xff0c;该类会被自动创建&#xff1b; 我们可以通过Runtime.getRuntime() 方法来获取当前程序的Runtime实例&#xff1b; 二、核心方法&#xff1a; &#xff08;1&…

基础测试

public class Test1 { /** * 第1题&#xff1a;从键盘接受一个数字&#xff0c;列出该数字的中文表示格式&#xff0c; 例如&#xff1a;键盘输入123&#xff0c;打印出一二三&#xff1b;键盘输入3103&#xff0c;打印出三一零三。 * * param args */ …

Jquery复习(七)之尺寸

jQuery 尺寸 方法 jQuery 提供多个处理尺寸的重要方法&#xff1a; width() height() innerWidth() innerHeight() outerWidth() outerHeight() jQuery 尺寸 jQuery width() 和 height() 方法 width() 方法设置或返回元素的宽度&#xff08;不包括内边距、边框或外边距&am…

C++学习_第1章_从C到C++

一、引用的概念和应用 1.引用的概念 下面写法定义了一个引用&#xff0c;并将其初始化为引用某个变量。类型名 & 引用名 某变量名;int n 4;int & r n; // r引用了n&#xff0c;r的类型是 int & 某个变量的引用&#xff0c;等价于这个变量&#xff0c;相当于该变…

更改默认安装位置到其他盘

1 同时按住Win R键&#xff0c;出现如下界面&#xff0c;在输入框中输入regedit&#xff0c;点击确定。 2 此时会进入到注册表编辑器界面&#xff0c;按如下路径选择&#xff1a;计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 将所有默认路径&#xf…

jspservlet入门小项目--留言管理

一&#xff0c;jsp,servlet基础知识 1&#xff0c;jsp有一些内置对象&#xff0c;常用的有&#xff1a; out(PrintWriter),request(HttpServletRequest),response(HttpServletresponse),session(HttpSession),application(ServletContext) 注意&#xff1a;建议html和java代码分…

如何启用SQL Server 2008的FILESTREAM特性

如何启用SQL Server 2008的FILESTREAM特性 今天安装SQL Server 2008的时候没有注意&#xff0c;忘记了启用FILESTREAM特性&#xff0c;因为默认情况下FILESTREAM是禁用的。安装完成后&#xff0c;再导入一个.bak的备份数据库时提示FILESTREAM feature is disabled&#xff0c;到…

ARM Linux.2.6.34内核移植

ARM-LINUX-GCC版本4.3.2.以安装在/usr/local/arm/4.3.2下.第一步:修改linux-2.6.34/Makefile文件,在makefile中找到以下两条信息并做修改ARCH &#xff1f; arm CROSS_COMPILE &#xff1f;/usr/local/arm/4.3.2/bin/arm-linux-第二步:修改平台输入时钟修改平台的时钟频率&…

网络开发必备的HTTP协议知识

一、什么是HTTP协议 HTTP协议是一种应用层协议&#xff0c;HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览…

SSP状态寄存器SSPSTAT

R R R R R R ─ ─ D/A P S R/W UA BF 地址&#xff1a;94h上电值&#xff1a;00h │ │ │ │ │ │ │ │ └┬┘ │ │ │ │ │ └──── 缓冲区满 …

----uni-app之解决HBuilderX安装less成功运行时提示未安装----

转载于:https://www.cnblogs.com/zjy850984598/p/11238777.html

js使浏览器窗口最大化(适用于IE的方法)

这里使用的方法是IE的私有特性&#xff0c;只能在IE中有效。主要是window.moveTo和 window.resizeTo方法。效果和点击最大化按钮差不多&#xff0c;有一点区别。点击最大化按钮后&#xff0c;浏览器的内容填充满显示器&#xff0c;浏览器窗口的边框被挤出显示器。而该js的最大化…

win7系统cocos2dx 3.4 绑定自定义类到Lua

Cocos2d-x 3.0开始使用bindings-generator来生成c类的lua绑定。bindings-generator基于tolua&#xff0c;通过配置tools/tolua中的ini文件以及运行genbindings.py就可以自动生成c类的绑定&#xff0c;具体的步骤在cocos2d-x-3.4\tools\tolua\README.mdown文件中&#xff0c;文档…

jQuery无任何标示获取td在表格中的行数和列数

当td没有任何标示时&#xff0c;在jQuery中实现获取其在表格中的行和列&#xff1a;<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns"http://www.w…

docker, docker-compose安装

官方文档&#xff1a; 安装docker: https://docs.docker.com/install/linux/docker-ce/centos/ 安装docker-compose: https://docs.docker.com/compose/install/ # 所有docker命令映射都是&#xff1a;local:container# create container docker run --name <name> -p 1…