canvas 保存、恢复、清空重绘

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>canvas 保存、恢复、清空重绘</title>
    <style>
      #canvas {
        background-color: #f9f9f9;
      }
    </style>
  </head>

  <body>
    <canvas id="canvas">浏览器不支持 canvas </canvas>
  </body>
  <script>
  var canvas = document.getElementById('canvas')
  var ctx = canvas.getContext('2d')
  canvas.height = 500
  canvas.width = 1000

  ctx.fillStyle = 'red'
  ctx.fillRect(20, 20, 50, 50)
  ctx.save() // 保存:ctx.save() 保存当前Canvas画布状态并放在栈的最上面,可以使用restore()方法依次取出。

  ctx.fillStyle = 'green'
  ctx.fillRect(20, 80, 50, 50)

  ctx.restore() // 恢复:ctx.restore() 恢复到上一个 save() 方法之前的状态,相当于恢复到以前的某个 save 节点,解决了绘制状态总是多个重置的问题
  ctx.fillRect(20, 150, 100, 100)

  ctx.fillStyle = 'blue'
  ctx.fillRect(320, 20, 300, 150)
  ctx.clearRect(365, 60, 66, 66) // 清空:ctx.clearRect(x, y, width, height); 相当于橡皮擦,擦掉指定区域的内容
  </script>
</html>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容