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
大数据量
高交互场景
可导出图片
放大不失真
支持事件处理
文字可编辑


相关文章
|
14天前
|
XML 编解码 前端开发
svg和canvas的区别
【10月更文挑战第24天】SVG和Canvas各有优缺点,在实际应用中需要根据具体的需求和场景来选择合适的技术来实现图形绘制和交互效果。
32 1
|
14天前
|
XML 前端开发 JavaScript
如何使用 SVG 和 Canvas 来创建动画?
【10月更文挑战第24天】使用 SVG 和 Canvas 创建动画都有各自的特点和优势,SVG 更适合基于 XML 和 CSS 的简单动画,而 Canvas 则更适合通过 JavaScript 实现复杂的、高性能的动画效果。在实际应用中,可以根据具体的需求和场景选择合适的技术来创建动画。
36 1
|
1月前
|
XML 存储 前端开发
canvas与svg的区别
canvas与svg的区别
22 4
|
1月前
|
XML 前端开发 JavaScript
Canvas 和 SVG 的区别
Canvas 和 SVG 的区别
27 0
|
1月前
|
XML 移动开发 前端开发
Canvas和SVG的区别
Canvas和SVG的区别
55 0
|
6月前
|
XML 前端开发 JavaScript
canvas和svg有什么区别
canvas和svg的区别
|
6月前
|
XML 存储 前端开发
canvas和svg的区别
canvas和svg的区别
|
6月前
|
XML 前端开发 JavaScript
canvas和svg的比较
canvas和svg的比较
|
XML 前端开发 JavaScript
canvas 和 svg 的区别是什么
canvas 和 svg 的区别是什么
80 0
|
6月前
|
XML 移动开发 前端开发
Canvas和SVG:你应该选择哪一个?
Canvas和SVG:你应该选择哪一个?
98 2