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中的5个有趣的新技术
Apr 02 HTML / CSS
纯css3显示隐藏一个div特效的具体实现
Feb 10 HTML / CSS
CSS3实现时间轴效果
Jul 11 HTML / CSS
HTML5实现锚点时请使用id取代name
Sep 06 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
Sep 21 HTML / CSS
简单的HTML5初步入门教程
Sep 29 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
Mar 19 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
Dec 06 HTML / CSS
Canvas 像素处理之改变透明度的实现代码
Jan 08 HTML / CSS
Html5 webview元素定位工具的实现
Aug 07 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
Aug 20 HTML / CSS
canvas绘制图片drawImage使用方法
Sep 15 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
如何给phpadmin一个保护
2006/10/09 PHP
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
2019/10/10 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
vue中的watch监听数据变化及watch中各属性的详解
2018/09/11 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
详解keep-alive + vuex 让缓存的页面灵活起来
2019/04/19 Javascript
vue3.0 上手体验
2020/09/21 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python 对象和json互相转换方法
2018/03/22 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
python变量的存储原理详解
2019/07/10 Python
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
2014年元旦促销活动方案
2014/02/22 职场文书
公司晚会主持词
2014/03/22 职场文书
医院2014国庆节活动策划方案
2014/09/21 职场文书
个人投资合作协议书
2014/10/12 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书