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圆角边框制作代码
Nov 18 HTML / CSS
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
Jul 08 HTML / CSS
CSS3 实现发光边框特效
Nov 11 HTML / CSS
HTML5打开本地app应用的方法
Mar 31 HTML / CSS
HTML5之WebGL 3D概述(上)—WebGL原生开发开启网页3D渲染新时代
Jan 31 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
Jun 09 HTML / CSS
Html5 audio标签样式的修改
Jan 28 HTML / CSS
使用canvas实现黑客帝国数字雨效果
Jan 02 HTML / CSS
html5响应式开发自动计算fontSize的方法
Jan 13 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
Dec 07 HTML / CSS
CSS3常见动画的实现方式
Apr 14 HTML / CSS
CSS控制继承中的height能变为可继承吗
Jun 10 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
用Socket发送电子邮件
2006/10/09 PHP
玩转虚拟域名◎+ .
2006/10/09 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
PHP模板解析类实例
2015/07/09 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
php取出数组单个值的方法
2018/03/12 PHP
php使用pecl方式安装扩展操作示例
2019/08/12 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
js变量作用域及可访问性的探讨
2006/11/23 Javascript
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
javascript验证身份证号
2015/03/03 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
2016/10/15 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
python程序控制NAO机器人行走
2019/04/29 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
用Python解数独的方法示例
2019/10/24 Python
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
会计应聘求职信范文
2013/12/17 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
家访教师心得体会
2016/01/23 职场文书