Canvas和SVG的区别


一、Canvas

只是图形容器,必须使用脚本来绘制图形

描述:

通过Javascript来绘制2D图形

是逐像素进行渲染的。

其位置发生改变,会重新进行绘制。

Canvas 对象表示一个 HTML 画布元素 -<canvas>。它没有自己的行为,但是定义了一个 API 支持脚本化客户端绘图操作。

二、SVG

全称为可伸缩矢量图形 (Scalable Vector Graphics),意为可缩放的矢量图形

描述:

一种使用XML描述的2D图形语言。用来描述二维矢量及矢量/栅格图形

SVG提供了3种类型的图形对象:矢量图形(vectorgraphicshape例如:由直线和曲线组成的路径)、图像(image)、文本(text)。

SVG图形是可交互的和动态的,可以在SVG文件中嵌入动画元素或通过脚本来定义动画。

SVG基于XML意味着,SVG DOM中的每个元素都是可用的,可以为某个元素附加Javascript事件处理器。

SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

三、二者异同点

相同点:

都可以用来制作2D图形

不同点:

Canvas:

  • 依赖分辨率
  • 弱的文本渲染能力
  • canvas可以很好的绘制像素,能够以 .png 、.jpg或 .gif 格式保存结果图像,可做为API容器。
  • 最适合图像密集型的游戏,其中的许多对象会被频繁重绘
  • 更适合渲染较小的区域

SVG:

  • 不依赖分辨率
  • 支持事件处理器
  • SVG中属性改变时,浏览器可以重新呈现它,适用于矢量图
  • 最适合带有大型渲染区域的应用程序(比如谷歌地图)
  • 具有更好的文本渲染能力
  • 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
  • 不适合游戏应用

一句话总结:都是2D做图,SVG是矢量图,canvas是位图。Canvas 是逐像素进行渲染的,适合游戏。

四、用途

1、SVG为什么适合做google地图?

因为是矢量图,缩放不影响显示

2、SVG如何使用?

用svg标签,里面可以是circle标签

<svg width="100%" height="100%"  >
    <circle cx="300" cy="60" r="50" stroke="#ff0" stroke-width="3" fill="red" />
</svg>

文章作者: 弈心
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 弈心 !
评论
  目录