HTML5中Canvas与SVG的画图原理比较


Posted in HTML / CSS onJanuary 16, 2013

canvas 与 SVG都能够使你在浏览器中画图,但它们的基本原理不同。
SVG
SVG是一种在XML中描述二维图形的语言。
SVG是基于XML的,意味着在SVG DOM内每一个元素都是可用的。你可以为每一个元素增加JS事件处理器。
在SVG中,每一个图形被记作一个对象。如果一个SVG对象的属性发生改变,浏览器可以自动重新生成图形。

Canvas
Canvas能够在fly上画2D图形(使用JS)
Canvas能够按照像素重新生成。

在Canvas中,一旦图形完成,就会被浏览器忘记。如果图形位置要发生改变,那么整个屏幕需要重画,包括图形覆盖的对象。

Canvas 和SVG的比较
下表显示了canvas与SVG的主要不同点:

Canvas          SVG
依赖分辨率      独立于分辨率
不支持事件处理器 支持事件处理器
弱文本渲染能力 最适合具有大渲染面积的应用(谷歌地图)
可以保存最终图片为PNG或者JPG 复杂图像,重画变慢(任何使用DOM很多的情况都会变慢)
最适合许多 对象频繁重画的图形游戏        不适合游戏应用
HTML / CSS 相关文章推荐
css3实现六边形边框的实例代码
May 24 HTML / CSS
CSS实现雨滴动画效果的实例代码
Oct 08 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
Jun 22 HTML / CSS
video结合canvas实现视频在线截图功能
Jun 25 HTML / CSS
HTML5 placeholder(空白提示)属性介绍
Aug 07 HTML / CSS
HTML5 canvas画矩形时出现边框样式不一致的解决方法
Oct 14 HTML / CSS
html5桌面通知(Web Notifications)实例解析
Jul 07 HTML / CSS
HTML5触摸事件演化tap事件介绍
Mar 25 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
Mar 13 HTML / CSS
HTML5 表单验证失败的提示语问题
Jul 13 HTML / CSS
Unicode中的CJK(中日韩统一表意文字)字符小结
Dec 06 HTML / CSS
CSS使用SVG实现动态分布的圆环发散路径动画
Dec 24 HTML / CSS
html5 svg 中元素点击事件添加方法
Jan 16 #HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
Jan 09 #HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
Jan 09 #HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
Jan 09 #HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
Jan 09 #HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
Jan 09 #HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
Jan 09 #HTML / CSS
You might like
浅析is_writable的php实现
2013/06/18 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
Javascript合并表格中具有相同内容单元格示例
2013/08/11 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
[51:20]完美世界DOTA2联赛PWL S2 Magma vs PXG 第一场 11.28
2020/12/01 DOTA
Python+Django搭建自己的blog网站
2018/03/13 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
学习十八大精神心得体会
2013/12/31 职场文书
平民服装店创业计划书
2014/01/17 职场文书
森林防火宣传标语
2014/06/27 职场文书
小孩不笨观后感
2015/06/03 职场文书
法律意见书范本
2015/06/04 职场文书
JavaScript异步操作中串行和并行
2021/11/20 Javascript