canvas 保存、恢复、清空重绘

2025-01-06  本文已影响0人  暴躁程序员
<!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>

上一篇 下一篇

猜你喜欢

热点阅读