Day26 - Canvas 与 SVG的区别

简介: Day26 - Canvas 与 SVG的区别

SVG


SVG 指可伸缩矢量图形 (Scalable Vector Graphics)。 SVG 是使用 XML 来描述二维图形和绘图程序的语言


<svg width="400" height="110">
  <rect
    width="150"
    height="75"
    style="fill: rgb(0, 0, 255); stroke-width: 3; stroke: rgb(0, 0, 0)"
  />
</svg>


Canvas


HTML [canvas] 标签用于通过脚本(通常是 JavaScript)动态绘制图形。


<canvas id="myCanvas" width="200" height="100"></canvas>
<script type="text/javascript">
  var c = document.getElementById("myCanvas");
  var cxt = c.getContext("2d");
  cxt.fillStyle = "#FF0000";
  cxt.fillRect(0, 0, 150, 75);
</script>


Canvas优势


  • 绘制出来的图形是位图具有很好的渲染性能


  • 适合数据量比较大(>1000)


  • 大量图形高频率交互


  • 适合游戏


  • 可以导出jpg/png图片


Echarts中的热力图


网络异常,图片无法展示
|


Echarts中的炫光拖尾


网络异常,图片无法展示
|


SVG优势


  • 矢量图放大不失真


  • 支持事件处理器


  • 文字独立、可编辑可搜索


案例选择了一个Vue3中的一个demo,通过响应式数据直接渲染svg,非常的精彩。


<g>
  <polygon :points="points"></polygon>
  <circle cx="100" cy="100" r="80"></circle>
  <axis-label
              v-for="(stat, index) in stats"
              :stat="stat"
              :index="index"
              :total="stats.length">
  </axis-label>
</g>


function valueToPoint (value, index, total) {
  var x     = 0
  var y     = -value * 0.8
  var angle = Math.PI * 2 / total * index
  var cos   = Math.cos(angle)
  var sin   = Math.sin(angle)
  var tx    = x * cos - y * sin + 100
  var ty    = x * sin + y * cos + 100
  return {
    x: tx,
    y: ty
  }
}


对比表格


Canvas SVG
大数据量
高交互场景
可导出图片
放大不失真
支持事件处理
文字可编辑


相关文章
|
5月前
|
XML 存储 前端开发
canvas和svg的区别
canvas和svg的区别
|
5月前
|
XML 前端开发 JavaScript
canvas和svg有什么区别
canvas和svg的区别
|
5月前
|
XML 前端开发 JavaScript
canvas和svg的比较
canvas和svg的比较
|
11月前
|
XML 前端开发 JavaScript
canvas 和 svg 的区别是什么
canvas 和 svg 的区别是什么
73 0
|
5月前
|
XML 移动开发 前端开发
Canvas和SVG:你应该选择哪一个?
Canvas和SVG:你应该选择哪一个?
79 2
|
5月前
|
XML 移动开发 前端开发
Canvas和SVG有什么区别?
Canvas和SVG有什么区别?
55 1
|
5月前
|
XML 移动开发 前端开发
canvas与svg区别与实际应用
canvas与svg区别与实际应用
50 0
|
11月前
|
XML 编解码 前端开发
canvas和svg的区别?
canvas和svg的区别?
|
11月前
|
前端开发
canvas 和 svg 的区别是什么?
canvas 和 svg 的区别是什么?
33 0
|
移动开发 前端开发 JavaScript
Canvas2D基础
1. canvas内容就是上面这些了,就好比设计师能用的颜色就那么多,但是将颜色,图形组合起来,创意真的是无限的,canvas也是如此。 2. webGL是一个 对OpenGL ES 2.0浏览器实现接口,用于3D绘画,生产阶段最好不要用,可用于实验阶段。
247 0