HLJ 发布于
2018-08-20 12:45:00

HTML5 Canvas save()方法和restore()方法

要使用HTML5 Canvas保存和恢复不同的转换状态,我们可以使用画布上下文的save()和restore()方法。
在本教程中,我们将通过在每次转换之前将状态推送到状态堆栈来保存转换状态。 我们将绘制一个蓝色矩形,恢复并弹出最后一个转换状态并绘制一个红色矩形,恢复并弹出最后一个转换状态并绘制一个黄色矩形,然后最终恢复并弹出最终转换状态并绘制一个 绿色矩形。
html代码:
<!DOCTYPE HTML>
<html>
  <head>
    <style>
      body {
        margin: 0px;
        padding: 0px;
      }
    </style>
  </head>
  <body>
    <canvas id="myCanvas" width="578" height="200"></canvas>
    <script>
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');
      var rectWidth = 150;
      var rectHeight = 75;

      context.save();
      // save state 1
      context.translate(canvas.width / 2, canvas.height / 2);

      context.save();
      // save state 2
      context.rotate(Math.PI / 4);

      context.save();
      // save state 3
      context.scale(2, 2);

      context.fillStyle = 'blue';
      context.fillRect(rectWidth / -2, rectHeight / -2, rectWidth, rectHeight);

      context.restore();
      // restore state 3
      context.fillStyle = 'red';
      context.fillRect(rectWidth / -2, rectHeight / -2, rectWidth, rectHeight);

      context.restore();
      // restore state 2
      context.fillStyle = 'yellow';
      context.fillRect(rectWidth / -2, rectHeight / -2, rectWidth, rectHeight);

      context.restore();
      // restore state 1
      context.fillStyle = 'green';
      context.fillRect(rectWidth / -2, rectHeight / -2, rectWidth, rectHeight);


    </script>
  </body>
</html>
当前文章内容为原创转载请注明出处:http://www.good1230.com/detail/2018-08-20/166.html
最后生成于 2023-06-18 18:38:06
此内容有帮助 ?
0