1、关于Canvas绘制图像:
问题:需要绘制多张图片时,必须等待所有图片加载完成才能开始绘制;而每张图片都是异步请求,彼此没有先后顺序,哪一张先加载完成完全无法预测;
方案:
var progress=0;//全局加载进度
var img=new Image();
img.src=‘xx.jpg‘;
img.onload=function(){
progress+=10;//该图片权重
if(progress===100){
startDraw();
}
}
2、关于Canvas中某个图形/图像添加事件监听:
问题:HTML中,只有标签/元素才能添加事件监听,而Canvas绘图只有一个标签——Canvas;
方案:若要为Canvas中某个图形/图像添加事件监听,可委托给Canvas,获取事件发生坐标,然后判断是否处于目标图像/图形内;
3、SVG绘图:
Scalable Vector Graphics,可缩放的矢量图;
元素组:<g></g>;把多个元素包含起来,每个组员共享<g>元素的属性;
4、SVG绘图——绘制矩形:
①SVG图形属性可使用HTML标签属性来声明,也可以使用类似CSS的形式声明——SVG标签专用样式;这些属性不属于HTML DOM,不能直接rect.x读写,可使用核心DOM的setAttribute();方法操作;
②<rect></rect>
③属性:width——矩形的宽;height——矩形的高;x——定位点的X坐标;y——定位点的Y坐标;fill——填充颜色;fill-opacity——填充颜色透明度;stroke——描边颜色;stroke-width——描边宽度;
④使用JS创建新SVG元素:
方法一:svg.innerHTML=‘<rect></rect>‘;
方法二:document.createElementNS(‘http://www.w3.org/2000/svg‘,‘rect‘);
5、SVG绘图——绘制圆形:
①<circle></circle>
②属性:r——半径;cx——圆心的X坐标;cy——圆心的Y坐标;fill——填充颜色,默认为#000;fill-opacity——填充颜色透明度;stroke——描边颜色,默认为transparent;stroke-width——描边宽度;
6、SVG绘图——绘制椭圆:
①<ellipse></ellipse>
②属性:rx——横向半径;ry——纵向半径;cx——圆心的X坐标;cy——圆心的Y坐标;fill——填充颜色,默认为#000;fill-opacity——填充颜色透明度;stroke——描边颜色,默认为transparent;stroke-width——描边宽度;
7、SVG绘图——绘制直线:
①<line></line>
②属性:x1——起点横坐标;y1——起点纵坐标;x2——终点纵坐标;y2——终点纵坐标;stroke——描边颜色,默认transparent;stroke-width——描边宽度;
8、SVG绘图——绘制折线:
①<polyline></polyline>
②属性:points——折线上的点,取值:"0,0 10,20 x,y ...";fill——填充颜色,默认为#000;fill-opacity——填充颜色透明度,必须设置为0,否则会自动填充;stroke——描边颜色,默认为transparent;stroke-width——描边宽度;
9、SVG绘图——绘制多边形:
①<polygon></polygon>
②属性:points——多边形各角上的点,取值:"0,0 10,20 x,y ...";fill——填充颜色,默认为#000;fill-opacity——填充颜色透明度;stroke——描边颜色,默认为transparent;stroke-width——描边宽度;
10、SVG绘图——绘制文本:
①<text>文本内容</text>
②属性:x——起点横坐标;y——起点纵坐标;font-size——字体大小;font-family——字体类型;fill——填充颜色,默认为#000;fill-opacity——填充颜色透明度;stroke——描边颜色,默认为transparent;stroke-width——描边宽度;
11、SVG绘图——绘制图像:
①若绘制了位图在SVG上,SVG图放大后也会失真;
②<image></image>
③属性:x——起点横坐标;y——起点纵坐标;xlink:href——指定图片的URL;width——图片的宽,默认为0不显示;height——图片的高,默认为0不显示;
12、SVG绘图中的渐变色:
渐变对象属于SVG中的特效对象——特效对象,都必须定义在<defs></defs>标签内;例:
<svg id="s1" width="500" height="400">
<defs>
<!--定义id为rainbow的特效元素-->
<linearGradient id="rainbow" x1="0" y1="0" x2="100%" y2="100%">
<stop offset="0" stop-color="red"></stop>
<stop offset="1" stop-color="purple"></stop>
</linearGradient>
</defs>
<!--引用id为rainbow的特效元素-->
<rect x="50" y="100" width="400" height="200" fill="url(#rainbow)"></rect>
</svg>
HTML5_04之SVG绘图
时间: 2024-11-13 22:20:57
HTML5_04之SVG绘图的相关文章
SVG绘图学习总结
在我们平时做的很多网站项目中都会需要绘制各种各样的二维矢量图形.比如做城市地下管网的断面图.管线管点的坐标位置矢量标识图.钻孔位置或地层剖面图等等.我们有很多种方法来绘制这些矢量图(vml.canvas.svg等等),下面我要介绍的是SVG绘图语言,也是我在做项目中用到比较多的,仅以我的个人实战经验分享给大家,供大家参考: 一.SVG理论知识 SVG是一种矢量标记语言,网上也有很多关于SVG的理论知识描述,大家可以自己去百度学习,比较通俗地说,SVG是一种语言,是一块画布,在这块画布上,用户可以
HTML5 十大新特性(五)——SVG绘图
相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要注意的是,SVG图形的属性不属于HTML DOM标准,需要用核心DOM的方法来操作:SVG的样式可以用css,但是只能用其专有的属性:如果要使用js动态生成SVG其中的元素,创建方法得用document.createElementNS('http://www.w3.org/2000/svg','标签
SVG绘图(二) —— 渲染满天星辰
看到一些炫酷的动画,总有种好想实现它,但是又无奈于腹中的代码量略少,只好不明觉厉,圆圆的大眼睛里满是对新事物的渴求. 在网页中嵌入动画,过去比较流行采用Falsh.Java Applet和微软的SilverLight,但他们的网页安全性.兼容性.难操作性以及文件的大小等缺陷让很多Web开发者又爱又恨.Gif依旧是个不错的选择,但遗憾的是并不能用DOM操控其中的元素.自从有了SVG.HTML5和CSS3,一些简单的平面动画的实现变得方便和简单,虽然他们在一些方面譬如兼容性和可操作性等依然未能完全尽
HTML学习总结(四)【canvas绘图、WebGL、SVG】
一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图.SVG 绘图很容易编辑与生成,但功能明显要弱一些. canvas可以完成动画.游戏.图表.图像处理等原来需要Flash完成的一
HTML5 学习总结(四)——canvas绘图、WebGL、SVG
HTML5 学习总结(四)--canvas绘图.WebGL.SVG 目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML5游戏开发 2.2.1.Cocos2D-HTML5 2.2.2.Egret(白鹭引擎) 三.SVG 3.1.SVG Hello Wrold 3.2.多种引入SVG的方法 3.3.画直线 3.4.画椭圆 3.5.文本与矩形 3.6.向
SVG在WEB绘图中的使用
一.在WEB项目开发过程中,如果需要动画或者画图效果的功能,我们一般怎么去处理?传统的做法有GIF动画,HTML5组装动画,如果动画需要与操作人员交互功能,一般采用flash,flex还有sliverlight技术来实现.这些技术在使用和操作起来都显得过于复杂,现在我介绍另一种基于 WEB的绘图技术SVG. 二.什么是SVG: 可缩放矢量图形(英语:Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式.SVG由W3C制定,是
HTML5 学习笔记(四)——canvas绘图、WebGL、SVG
一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 SVG以及 VML 之间的一个重要的不同是,<canvas> 有一个基于 JavaScript 的绘图 API,而 SVG 和 VML 使用一个 XML 文档来描述绘图.SVG 绘图很容易编辑与生成,但功能明显要弱一些. canvas可以完成动画.游戏.图表.图像处理等原来需要Flash完成的一
canvas与svg区别
HTML5新特性之五--SVG绘图 Canvas绘图 SVG绘图 绘图类型 位图 矢量图 缩放 失真 不失真 颜色细节 丰富 不够丰富 应用领域 照片.游戏 统计图.图标.地图 内容 JS绘制 每个图形都是标签 事件绑定 不方便 方便 Scalable Vector Graphiph,可缩放的矢量图,此技术在2000年就已经存在了,独立于网页的一门技术:HTML5之后,纳入了HTML5标准标签库,并进行了一定的瘦身. SVG技术的使用方法: (1)HTML5之前的使用方法: SVG标签不属于
SVG 参考手册
1. SVG元素模块 Animation.Module animate animateColor animateTransform animateMotion set mpath 剪裁模块 clipPath 颜色轮廓模块 color-profile 条件处理模块 switch 光标模块 cursor 扩展性模块 foreignObject 过滤器模块 filter feFlood feColorMatrix feComponentTransfer feComposite feConvolveMa