SVG 2D入门4 - 笔画与填充
前面我们重点都在总结各类形状,文本和图片,接下来,我们还是和讨论canvas一样,总结一下颜色处理,也就是填充和边框效果;你会发现这里的内容与canvas基本上是一致的。这些属性既可以以属性的形式写在元素中,也可以以CSS的形式保存(这是与canvas不一样的地方)。
填充色 - fill属性
这个属性使用设置的颜色填充图形内部,使用很简单,直接把颜色值赋给这个属性就可以了。看例子:
fill-opacity="0.5" stroke-opacity="0.8"/>
上面例子中画了一个红色蓝边的矩形。注意几点:
1. 如果不提供fill属性,则默认会使用黑色填充,如果要取消填充,需要设置成none。
2. 可以设置填充的透明度,就是fill-opacity,值的范围是0到1。
3. 稍微复杂一点的是fill-rule属性。这个属性定义了判断点是不是属于填充范围的算法;除了inherit这个值外,还有两个取值:
nonzero:这个值采用的算法是:从需要判定的点向任意方向发射线,然后计算图形与线段交点的处的走向;计算结果从0开始,每有一个交点处的线段是从左到右的,就加1;每有一个交点处的线段是从右到左的,就减1;这样计算完所有交点后,如果这个计算的结果不等于0,则该点在图形内,需要填充;如果该值等于0,则在图形外,不需要填充。看下面的示例:
evenodd:这个值采用的算法是:从需要判定的点向任意方向发射线,然后计算图形与线段交点的个数,个数为奇数则改点在图形内,需要填充;个数为偶数则点在图形外,不需要填充。看下图的示例:
边框色 - stroke属性
上面的例子中已经用到了stroke属性,这个属性使用设置的值画图形的边框,使用起来也很直接,把颜色值赋给它就可以了。注意:
1. 如果不提供stroke属性,则默认不绘制图形边框。
2. 可以设置边的透明度,就是stroke-opacity,值的范围是0到1。
实际上,边的情况比图形内部稍微复杂一点,因为边除了颜色,还有"形状"需要定义。
线的端点 - stroke-linecap属性
这个属性定义了线段端点的风格,这个属性可以使用butt,square,round三个值。看例子:
<line x1="40" x2="120" y1="20" y2="20" stroke="black" stroke-width="20" stroke-linecap="butt"/>
<line x1="40" x2="120" y1="60" y2="60" stroke="black" stroke-width="20" stroke-linecap="square"/>
<line x1="40" x2="120" y1="100" y2="100" stroke="black" stroke-width="20" stroke-linecap="round"/>
</svg>
这段代码绘制了3条使用不同风格线端点的线,
从左面的图中我们可以很容易看出3中风格的不同。
线的连接 - stroke-linejoin属性
这个属性定义了线段连接处的风格,这个属性可以使用miter,round,bevel三个值。看例子:
<polyline points="40 60 80 20 120 60" stroke="black" stroke-width="20"
stroke-linecap="butt" fill="transparent" stroke-linejoin="miter"/>
<polyline points="40 140 80 100 120 140" stroke="black" stroke-width="20"
stroke-linecap="round" fill="transparent" stroke-linejoin="round"/>
<polyline points="40 220 80 180 120 220" stroke="black" stroke-width="20"
stroke-linecap="square" fill="transparent" stroke-linejoin="bevel"/>
</svg>
从左面的图中我们很容易看到3中风格的不同。
线的虚实 - stroke-dasharray属性
这个属性可以设置线段采用何种虚实线。看例子:
<path d="M 10 75 Q 50 10 100 75 T 190 75" stroke="black"
stroke-linecap="round" stroke-dasharray="5,10,5" fill="none"/>
<path d="M 10 75 L 190 75" stroke="red"
stroke-linecap="round" stroke-width="1" stroke-dasharray="5,5" fill="none"/>
</svg>
这个属性是设置一些列数字,不过这些数字必须是逗号隔开的。
属性中当然可以包含空格,但是空格不作为分隔符。每个数字
定义了实线段的长度,分别是按照绘制、不绘制这个顺序循环下去。
所以左面的例子中绘制的线是画5单位的实线,留5单位的空格,
再画5单位的实线...这样一直下去。
除了这些常用的属性,还有下列属性可以设置:
stroke-miterlimit:这个和canvas中的一样,它处理什么时候画和不画线连接处的miter效果。
stroke-dashoffset:这个属性设置开始画虚线的位置。
使用CSS展示数据
HTML5强化了DIV+CSS的思想,所以展示数据的部分还可以交给CSS处理。与普通HTML元素相比,只不过是 background-color和border换成了fill和stroke。其他的大多都差不多。简单看个例子:
stroke: black;
fill: blue;
}
是不是很熟悉,就是这么简单的。
转载于:https://www.cnblogs.com/dh-hui/p/3860550.html
SVG 2D入门4 - 笔画与填充相关推荐
- 突袭HTML5之SVG 2D入门1 - SVG综述
位图与矢量图 以前,浏览器中显示的图形,例如jpeg.gif等,都是位图,这些图像格式是基于光栅的.在光栅图像中,图像文件定义了图像中每个像素的颜色值.浏览器需要读取这些值并做出相应行动.这种图像的再 ...
- html2d动画,HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
交互性 SVG拥有良好的用户交互性,例如: 1. SVG能响应大部分的DOM2事件. 2. SVG能通过cursor良好的捕捉用户鼠标的移动. 3. 用户可以很方便的通过设置svg元素的zoomAnd ...
- svg 绘制多边形渐变边框并填充渐变背景
以六边形为例 绘制一个60*69像素的六边形 根据坐标 points="30,1 60,17 60,52 30,69 1,52 1,17" 设置边框大小 stroke-width ...
- android 动态生成直线,Android SVG技术入门:线条动画实现原理
SVG技术入门:线条动画实现原理 这是一个有点神奇的技术:一副线条构成的画能自动画出自己,非常的酷.SVG 意为可缩放矢量图形(Scalable Vector Graphics),是使用 XML 来描 ...
- 教程 | 10分钟入门简笔画12(创意小插画)
我的一家 很多宝宝说想学创作,今天跟大家分享简笔画中的联想小插画. 所谓联想小插画,就是想到哪里画到哪里.首先确定一个主题,抓住主要元素,然后用装饰性字体.元素.花边来丰富画面.我尝试创作了一张My ...
- python笔画教程_毛笔字入门基本笔画书写视频教程全集(18集)
毛笔字入门基本笔画书写视频教程全集(18集)课程简介: 毛笔字入门基本笔画书写视频教程全集(18集)本毛笔字入门视频,全集教程课程内容共18集,课程系统性的讲解了毛笔字书写中常用的常用基本笔画的认知理 ...
- java 2d svg_SVG 2D入门1 - SVG综述
位图与矢量图 以前,浏览器中显示的图形,例如jpeg.gif等,都是位图,这些图像格式是基于光栅的.在光栅图像中,图像文件定义了图像中每个像素的颜色值.浏览器需要读取这些值并做出相应行动.这种图像的再 ...
- SVG 图像入门教程
http://www.ruanyifeng.com/blog/2018/08/svg.html 一.概述 SVG 是一种基于 XML 语法的图像格式,全称是可缩放矢量图(Scalable Vector ...
- UNITY 2D入门基础教程 (一)
如果用以前版本的Unity做2D游戏,虽然能做,但是要费很多周折. 比如你可以将一张纹理赋予一个"面片"网格,然后用脚本控制它的动画调整它的位移.如果你要使用物理引擎,那么还要将这 ...
最新文章
- 使用了这个神器,让我的代码bug少了一半
- 浅谈SAP CRM开发——技术概念、与ECC 系列产品区别
- Trust is the most important thing to the team!
- LINQ to Entities 不识别方法“System.String ToString() 的解决方法
- php如何逐条读取数据库,php从数据库中读取特定的行(实例)
- MZOJ 1345 hero
- minio获取上传文件_Springboot集成Minio实现对象存储服务
- 添加.MSPX文件(VISTA下)
- php 域名方法,PHP获取域名方法
- Excel图表⑤—数据可视化的极简之美
- word转Html的实现方案
- redis命令之哈希表类型hget命令用法详情(不支持多field)
- 定量/高光谱遥感之——光谱分析技术
- linux移除硬盘命令,在Linux中在线添加及移除SCSI硬盘方法
- tar -zxvf是什么意思
- 贵州安顺:红色基因激活初心密码 为民服务谱写秀丽篇章
- 波士顿房价预测的TensorFlow实现(多元线性回归)
- 错误 1 error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 C:\Users\Administ
- python数据库开发 dga_dga域名生成算法
- 手撕神经网络(2)—— 将基本组件搭建成躯干
热门文章
- 双非硕士211,阿里(蚂蚁)技术四面:技术一面+技术二面+主管三面+HR面
- 百度地图画出手机GPS行驶轨迹——Web端
- [乡土民间故事_徐苟三传奇]第十二回_歪拐差役苦挑石磨
- HDMI转mipiCSI+Audio,东芝,TC358743,视频转换芯片
- 【使用两个队列实现栈】
- C语言rewind函数返回值为空,C语言rewind和fseek函数的用法详解(随机读写文件)...
- 1 区 IF:5+ | JGG 专刊征稿:人体微生物组
- style 标签中动态设置颜色
- (三)苏世民:我的经验和教训:追梦(3)
- 工业设计公司:从外观设计到软硬件设计