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绘图的更多相关文章

  1. SVG绘图学习总结

    在我们平时做的很多网站项目中都会需要绘制各种各样的二维矢量图形.比如做城市地下管网的断面图.管线管点的坐标位置矢量标识图.钻孔位置或地层剖面图等等.我们有很多中方法来绘制这些矢量图(vml.canva ...

  2. H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图

    今天学习的内容 3.1:h5新特性---第三方绘图工具库 echarts(canvas) 百度 echarts;d3;two.js;.... 3.2:h5新特性---SVG绘图 3.2:h5新特性-- ...

  3. HTML5 十大新特性(五)——SVG绘图

    相对于canvas绘图,SVG是一种绘制矢量图的技术.全称叫做Scalable Vector Graphics,可缩放的矢量图,在2000年就已经存在,H5把它纳入了标准标签库,并进行了一些瘦身.需要 ...

  4. svg绘图工具raphael.js的使用

    1.raphael.js svg画图的开源库,支持IE8+ 官方api: http://dmitrybaranovskiy.github.io/raphael/reference.html Githu ...

  5. HTML5 学习总结(四)——canvas绘图、WebGL、SVG

    一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...

  6. canvas绘图、WebGL、SVG

    目录 一.Canvas 1.1.创建canvas元素 1.2.画线 1.3.绘制矩形 1.4.绘制圆弧 1.5.绘制图像 1.6.绘制文字 1.7.随机颜色与简单动画 二.WebGL 2.1.HTML ...

  7. HTML5 学习笔记(四)——canvas绘图、WebGL、SVG

    一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...

  8. HTML学习总结(四)【canvas绘图、WebGL、SVG】

    一.Canvas canvas是HTML5中新增一个HTML5标签与操作canvas的javascript API,它可以实现在网页中完成动态的2D与3D图像技术.<canvas> 标记和 ...

  9. 前端绘图方式Canvas和SVG的区别

    Canvas和SVG是html5中支持2种可视化技术,都是可以在画布上绘制图形和放入图片.下面来介绍和分析一下他们. 一.Canvas 和 SVG 简介 1.什么是Canvas? Canvas 是H5 ...

随机推荐

  1. javascript动画系列第三篇——碰撞检测

    前面的话 前面分别介绍了拖拽模拟和磁性吸附,当可视区域内存在多个可拖拽元素,就出现碰撞检测的问题,这也是javascript动画的一个经典问题.本篇将详细介绍碰撞检测 原理介绍 碰撞检测的方法有很多, ...

  2. .NET 4.6.2正式发布带来众多特性

    虽然大多数人的注意力都集中在.NET Core上,但与原来的.NET Framework相关的工作还在继续..NET Framework 4.6.2正式版已于近日发布,其重点是安全和WinForms/ ...

  3. Hello Web API系列教程——Web API与国际化

    软件国际化是在软件设计和文档开发过程中,使得功能和代码设计能处理多种语言和文化习俗,在创建不同语言版本时,不需要重新设计源程序代码的软件工程方法.这在很多成熟的软件开发平台中非常常见.对于.net开发 ...

  4. 构建通用的 React 和 Node 应用

    这是一篇非常优秀的 React 教程,这篇文章对 React 组件.React Router 以及 Node 做了很好的梳理.我是 9 月份读的该文章,当时跟着教程做了一遍,收获很大.但是由于时间原因 ...

  5. 【NLP】Python NLTK处理原始文本

    Python NLTK 处理原始文本 作者:白宁超 2016年11月8日22:45:44 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的一种自然语言工具包,其收集的大量公开 ...

  6. 趣说游戏AI开发:曼哈顿街角的A*算法

    0x00 前言 请叫我标题党!请叫我标题党!请叫我标题党!因为下面的文字既不发生在美国曼哈顿,也不是一个讲述美国梦的故事.相反,这可能只是一篇没有那么枯燥的关于算法的文章.A星算法,这个在游戏寻路开发 ...

  7. javascript之闭包理解以及应用场景

    半个月没写博文了,最近一直在弄小程序,感觉也没啥好写的. 之前读了js权威指南,也写了篇博文,但是实话实说当初看闭包确实还是一头雾水.现在时隔一个多月(当然这一段时间还是一直有在看闭包的相关知识)理解 ...

  8. Could not evaluate expression

    VS15 调试变量不能显示值,提示:Could not evaluate expression 解决办法: 选择"在调试时显示运行以单击编辑器中的按钮"重启VS即可. 可参考:Vi ...

  9. [数据结构]——二叉树(Binary Tree)、二叉搜索树(Binary Search Tree)及其衍生算法

    二叉树(Binary Tree)是最简单的树形数据结构,然而却十分精妙.其衍生出各种算法,以致于占据了数据结构的半壁江山.STL中大名顶顶的关联容器--集合(set).映射(map)便是使用二叉树实现 ...

  10. Windows 7 上安装Visual Studio 2015 失败解决方案

    安装之前先要看看自己的系统支不支持,具体的可以看:https://www.visualstudio.com/en-us/visual-studio-2015-system-requirements-v ...