HTML 5中SVG 2D笔画与填充

开发 前端
颜色处理,也就是填充和边框效果;你会发现这里的内容与canvas基本上是一致的。这些属性既可以以属性的形式写在元素中,也可以以CSS的形式保存(这是与canvas不一样的地方)。

前面我们重点都在总结各类形状,文本和图片。

接下来,我们还是和讨论canvas一样,总结一下颜色处理,也就是填充和边框效果;你会发现这里的内容与canvas基本上是一致的。这些属性既可以以属性的形式写在元素中,也可以以CSS的形式保存(这是与canvas不一样的地方)。

填充色 - fill属性

这个属性使用设置的颜色填充图形内部,使用很简单,直接把颜色值赋给这个属性就可以了。看例子:

  1. <rect x="10" y="10" width="100" height="100" stroke="blue" fill="red" 
  2.        fill-opacity="0.5" stroke-opacity="0.8"/> 

上面例子中画了一个红色蓝边的矩形。注意几点:

1. 如果不提供fill属性,则默认会使用黑色填充,如果要取消填充,需要设置成none。

2. 可以设置填充的透明度,就是fill-opacity,值的范围是0到1。

边框色 - stroke属性

上面的例子中已经用到了stroke属性,这个属性使用设置的值画图形的边框,使用起来也很直接,把颜色值赋给它就可以了。注意:

1. 如果不提供stroke属性,则默认不绘制图形边框。

2. 可以设置边的透明度,就是stroke-opacity,值的范围是0到1。

实际上,边的情况比图形内部稍微复杂一点,因为边除了颜色,还有"形状"需要定义。

线的端点 - stroke-linecap属性

这个属性定义了线段端点的风格,这个属性可以使用butt,square,round三个值。看例子:

  1. <svg width="160" height="140"> 
  2.   <line x1="40" x2="120" y1="20" y2="20" stroke="black" stroke-width="20" stroke-linecap="butt"/> 
  3.   <line x1="40" x2="120" y1="60" y2="60" stroke="black" stroke-width="20" stroke-linecap="square"/> 
  4.   <line x1="40" x2="120" y1="100" y2="100" stroke="black" stroke-width="20" stroke-linecap="round"/> 
  5. </svg> 


这段代码绘制了3条使用不同风格线端点的线,

从左面的图中我们可以很容易看出3中风格的不同。

线的连接 - stroke-linejoin属性

这个属性定义了线段连接处的风格,这个属性可以使用miter,round,bevel三个值。看例子:

  1. <svg width="160" height="280"> 
  2.   <polyline points="40 60 80 20 120 60" stroke="black" stroke-width="20" 
  3.       stroke-linecap="butt" fill="transparent" stroke-linejoin="miter"/> 
  4.     
  5.   <polyline points="40 140 80 100 120 140" stroke="black" stroke-width="20" 
  6.       stroke-linecap="round" fill="transparent" stroke-linejoin="round"/> 
  7.     
  8.   <polyline points="40 220 80 180 120 220" stroke="black" stroke-width="20" 
  9.       stroke-linecap="square" fill="transparent" stroke-linejoin="bevel"/> 
  10. </svg> 

 从左面的图中我们很容易看到3中风格的不同。

线的虚实 - stroke-dasharray属性

这个属性可以设置线段采用何种虚实线。看例子:

  1. <svg width="200" height="150"> 
  2.   <path d="M 10 75 Q 50 10 100 75 T 190 75" stroke="black" 
  3.     stroke-linecap="round" stroke-dasharray="5,10,5" fill="none"/> 
  4.   <path d="M 10 75 L 190 75" stroke="red" 
  5.     stroke-linecap="round" stroke-width="1" stroke-dasharray="5,5" fill="none"/> 
  6. </svg> 

这个属性是设置一些列数字,不过这些数字必须是逗号隔开的。

属性中当然可以包含空格,但是空格不作为分隔符。每个数字

定义了实线段的长度,分别是按照绘制、不绘制这个顺序循环下去。

所以左面的例子中绘制的线是画5单位的实线,留5单位的空格,

再画5单位的实线...这样一直下去。

除了这些常用的属性,还有下列属性可以设置:

stroke-miterlimit:这个和canvas中的一样,它处理什么时候画和不画线连接处的miter效果。

stroke-dashoffset:这个属性设置开始画虚线的位置。

使用CSS展示数据

HTML5强化了DIV+CSS的思想,所以展示数据的部分还可以交给CSS处理。与普通HTML元素相比,只不过是 background-color和border换成了fill和stroke。其他的大多都差不多。简单看个例子:

  1. #MyRect:hover {  
  2.    stroke: black;  
  3.    fill: blue;  
  4.  }  

是不是很熟悉,就是这么简单的。

实用参考:

脚本索引:http://msdn.microsoft.com/zh-cn/library/ff971910(v=vs.85).aspx

开发中心:https://developer.mozilla.org/en/SVG

热门参考:http://www.chinasvg.com/

官方文档:http://www.w3.org/TR/SVG11/

原文地址:http://www.cnblogs.com/dxy1982/archive/2012/04/14/2395734.html

 

责任编辑:张伟 来源: 沙场秋点兵的博客
相关推荐

2012-05-08 10:20:36

HTML5

2012-05-07 15:08:00

HTML5

2012-05-07 14:25:16

HTML5

2012-05-07 14:13:59

HTML5

2012-05-08 09:53:56

HTML 5

2013-01-08 11:00:20

IBMdW

2012-11-07 09:43:58

IBMdw

2011-04-25 14:36:24

Ubuntu Unit

2013-01-30 16:15:40

adobeHTML5css3

2011-08-11 18:07:55

iPhoneQuratz 2D

2023-05-03 09:01:41

CanvasWebGL

2020-10-26 13:40:00

CascadingSt

2022-05-23 10:26:10

人工智能机器学习机器视觉

2015-10-23 13:44:14

巴巴猎

2011-12-29 14:22:40

Java

2012-12-24 09:11:58

iOSUnity3D

2024-04-23 09:30:07

3D模型

2011-05-12 10:20:12

IE9HTML5

2022-07-13 10:20:14

自动驾驶3D算法

2011-08-17 14:07:43

IOS开发Quartz 2D
点赞
收藏

51CTO技术栈公众号