canvas和svg小记

一、关于canvas

  <canvas> 是 HTML5 新增的元素,可用于通过使用JavaScript中的脚本来绘制图形 例如,它可以用于绘制图形,创建动画。

  <canvas> 最早由Apple引入WebKit 我们可以使用<canvas>标签来定义一个canvas元素,canvas标签的两个属性<canvas> 看起来和 <img> 元素很相像,唯一的不同就是它并没有 src alt 属性。 实际上,<canvas> 标签只有两个属性—— widthheight,选择不写也可以。 当没有设置宽度和高度的时候,canvas会初始化宽度为300像素和高度为150像素

  画布的高宽 html属性设置width height时只影响画布本身不影画布内容,即 <canvas width = " " height= " " ><canvas>

  css属性设置width height时不但会影响画布本身的高宽, 还会使画布中的内容等比例缩放(缩放参照于画布默认的尺寸),即:<canvas  style = " width :  ; heigh :  " ><canvas>

  <canvas> 元素只是创造了一个固定大小的画布,在矩形区域的画布上,控制其每一像素,JavaScript 来绘制 2D图形,逐像素进行渲染。canvas元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成。

  

<script type="text/javascript">

  var c=document.getElementById("myCanvas");

  var cxt=c.getContext("2d");

  cxt.fillStyle="#FF0000";

  cxt.fillRect(0,0,150,75);

</script>

JavaScript 使用 id 来寻找 canvas 元素:

var c=document.getElementById("myCanvas");

然后,创建 context 对象:

var cxt=c.getContext("2d"); getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

下面的两行代码绘制一个红色的矩形:

cxt.fillStyle="#FF0000";cxt.fillRect(0,0,150,75); fillStyle 方法将其染成红色,fillRect 方法规定了形状、位置和尺寸。

上面的 fillRect 方法拥有参数 (0,0,150,75)。意思是:在画布上绘制 150x75 的矩形,从左上角开始 (canvas画布的左上角为原点(0,0))。

二、关于svg

  SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG是W3C("World Wide Web ConSortium" 即 " 国际互联网标准组织")在2000年8月制定的一种新的二维矢量图形格式,也是规范中的网络矢量图形标准。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。

  下面的例子是一个简单的 SVG 文件的例子。SVG 文件必须使用 .svg 后缀来保存:

  <?xml version="1.0" standalone="no"?>

  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

  <svg width="100%" height="100%" version="1.1"xmlns="网址">

  <circle cx="100" cy="50" r="40" stroke="black"stroke-width="2" fill="red"/>

  </svg>

第一行包含了 XML 声明。请注意 standalone 属性!该属性规定此 SVG 文件是否是“独立的”,或含有对外部文件的引用。

standalone="no" 意味着 SVG 文档会引用一个外部文件 - 在这里,是 DTD 文件。

第二和第三行引用了这个外部的 SVG DTD。该 DTD 位于 “http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd”。该 DTD 位于 W3C,含有所有允许的 SVG 元素。

SVG 代码以 <svg> 元素开始,包括开启标签 <svg> 和关闭标签 </svg> 。这是根元素。width 和 height 属性可设置此 SVG 文档的宽度和高度。version 属性可定义所使用的 SVG 版本,xmlns 属性可定义 SVG 命名空间。

SVG 的 <circle> 用来创建一个圆。cx 和 cy 属性定义圆中心的 x 和 y 坐标。如果忽略这两个属性,那么圆点会被设置为 (0, 0)。r 属性定义圆的半径。

stroke 和 stroke-width 属性控制如何显示形状的轮廓。我们把圆的轮廓设置为 2px 宽,黑边框。

fill 属性设置形状内的颜色。我们把填充颜色设置为红色。

关闭标签的作用是关闭 SVG 元素和文档本身。

三、canvas与svg比较  

  1.SVG具有丰富的DOM接口,在绘制方面Canvas是逐像素进行渲染的,也就是说,你需要告诉Canvas那个像素点什么颜色,他就会老老实实的把这个像素点画出来,但是要让它处理点击事件,拖动事件就要费功夫了,需要自己写很多事件触发的代码。而SVG则不同SVG是将每个绘制的元素当成一个对象,天生的相应一切网页原生DOM操作,当你需要个给一个矩形添加点击事件时,你只需要addOnClickListener就可以了~可以说是非常方便。

2.Canvas绘制效率高,Canvas只关心我们需要在指定的位置绘制对应像素,这样虽然让我们的交互变得十分麻烦,但是大大提高了绘制效率,反观SVG由于需要支持DOM操作,每个对象的属性值更改时都要进行更新,这样当绘制数据变化比较大或者对实时性要求较高时,就会出现卡顿的现象。

3.SVG不依赖分辨率,这也是SVG的一大优点,由于SVG绘图时是根据函数公式计算得出的位置,所以在不同分辨率下均能显现出优秀的效果,这一点在适配不同分辨率时大有用处,而canvas则是基于像素进行渲染的,所以会受到分辨率的影响。

下面的图看起来可能更直观一点:

原文地址:https://www.cnblogs.com/qsdf/p/10123752.html

时间: 2024-10-29 14:41:39

canvas和svg小记的相关文章

【HTML5】Canvas和SVG的区别

* SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的.您可以为某个元素附加 JavaScript 事件处理器. 在 SVG 中,每个被绘制的图形均被视为对象.如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形. * Canvas Canvas 通过 JavaScript 来绘制 2D 图形. Canvas 是逐像素进行渲染的. 在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注.如果

HTML 5 Canvas vs. SVG(摘抄)

摘抄自:http://www.w3school.com.cn/html5/html_5_canvas_vs_svg.asp 如果之前知道的话,理解起来就不会那么困难了,就能很快看懂代码,然后从模仿到创新.虽然技术的确需要脑力,但是积累多了 也会有不同的. Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的. SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的.您可以为某个元素附加 Jav

canvas与svg区别

HTML5新特性之五--SVG绘图   Canvas绘图 SVG绘图 绘图类型 位图 矢量图 缩放 失真 不失真 颜色细节 丰富 不够丰富 应用领域 照片.游戏 统计图.图标.地图 内容 JS绘制 每个图形都是标签 事件绑定 不方便 方便 Scalable Vector Graphiph,可缩放的矢量图,此技术在2000年就已经存在了,独立于网页的一门技术:HTML5之后,纳入了HTML5标准标签库,并进行了一定的瘦身. SVG技术的使用方法: (1)HTML5之前的使用方法: SVG标签不属于

H5 Canvas vs. SVG

HTML 5 Canvas vs. SVG HTML5 SVG HTML5 地理定位 Canvas 和 SVG 都允许您在浏览器中创建图形,但是它们在根本上是不同的. SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的.您可以为某个元素附加 JavaScript 事件处理器. 在 SVG 中,每个被绘制的图形均被视为对象.如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形. Canvas Canvas 通

Canvas 和 SVG 的区别

SVG可缩放矢量图形(Scalable Vector Graphics)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式.SVG是W3C制定的一种新的二维矢量图形格式,也是规范中的网络矢量图形标准.SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式. 什么是SVG? SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义用于网络的基于矢量的图形 SVG 使用 XML 格式定义图形

canvas和SVG分析比较

Canvas 和 SVG 之间的主要相似点为: 它们都是有效的图形工具,可用来快速创建在网页中显示的轻型图形:它们都使用 JavaScript 和 HTML:它们都遵守万维网联合会 (W3C) 标准. 这两种技术之间的主要区别是: Canvas 是基于像素的即时模式图形系统,最适合较小的表面或较大数量的对象,canvas不支持鼠标键盘等事件 SVG 是基于形状的保留模式图形系统,更加适合较大的表面或较小数量的对象.Canvas 和 SVG 在修改方式上还存在着不同.绘制 Canvas 对象后,不

Canvas VS . SVG

SVG SVG 是一种使用 XML 描述 2D 图形的语言. SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的.您可以为某个元素附加 JavaScript 事件处理器. 在 SVG 中,每个被绘制的图形均被视为对象.如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形. SVG 的优势 与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于: SVG 图像可通过文本编辑器来创建和修改 SVG 图像可被搜索.索引.脚本化或压缩 SVG 是可伸缩的

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

canvas 与 SVG都能够使你在浏览器中画图,但它们的基本原理不同.鞍山治疗白癜风多少钱www.pfk0412.com SVG SVG是一种在XML中描述二维图形的语言. SVG是基于XML的,意味着在SVG DOM内每一个元素都是可用的.你可以为每一个元素增加JS事件处理器. 在SVG中,每一个图形被记作一个对象.如果一个SVG对象的属性发生改变,浏览器可以自动重新生成图形. Canvas Canvas能够在fly上画2D图形(使用JS) Canvas能够按照像素重新生成. 在Canvas

Canvas与svg的比较

首先让我们分别了解一下这两个是什么: 什么是 Canvas? Canvas 是指定了长度和宽度的矩形画布, 可使用HTML5 JS API 来画出各种图形. 不过,canvas本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用脚本来完成实际的绘图任务 画布是一个矩形区域,您可以控制其每一像素. canvas 拥有多种绘制路径.矩形.圆形.字符以及添加图像的方法. 定义和用法 <canvas> 标签定义图形,比如图表和其他图像. <canvas> 标签只是图形容器,您必须使用脚