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中动画属性transform、transition和animation属性的区别
Sep 25 HTML / CSS
移动Web—CSS为Retina屏幕替换更高质量的图片
Dec 24 HTML / CSS
CSS3实例分享--超炫checkbox复选框和radio单选框
Sep 01 HTML / CSS
纯css3实现鼠标经过图片显示描述的动画效果
Sep 01 HTML / CSS
CSS3中使用RGBa来调节透明度的教程
May 09 HTML / CSS
CSS3 @media的基本用法总结
Sep 10 HTML / CSS
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
Nov 30 HTML / CSS
HTML5: Web 标准最巨大的飞跃
Oct 17 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
Jan 09 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
Dec 05 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
Dec 20 HTML / CSS
使用CSS实现一个搜索引擎的原理解析
Sep 25 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
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
php提高网站效率的技巧
2015/09/29 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
表格 隔行换色升级版
2009/11/07 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
JS求平均值的小例子
2013/11/29 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
nodejs实现遍历文件夹并统计文件大小
2015/05/28 NodeJs
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
js将当前时间格式化为 年-月-日 时:分:秒的实现代码
2018/01/20 Javascript
Vue-路由导航菜单栏的高亮设置方法
2018/03/17 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
python Canny边缘检测算法的实现
2020/04/24 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
css3教程之倾斜页面
2014/01/27 HTML / CSS
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
幼儿园数学教学反思
2014/02/02 职场文书
军训感想500字
2014/02/20 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
顶岗实习计划书
2015/01/16 职场文书
新学期开学标语2015
2015/07/16 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
Apache自带的ab压力测试工具的实现
2022/07/23 Servers