HTML5画布转换状态栈教程

保存和恢复不同转换状态与HTML5画布,我们可以使用save()和restore()画布的背景。

在本教程中,我们将保存转换状态通过推到州堆栈前立即转换。我们会画一个蓝色的矩形,恢复和流行最后转换状态,画一个红色的长方形,恢复和流行最后转换状态,画一个黄色的长方形,然后终于恢复和流行的最终转换状态,画一个绿色的矩形。

<!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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值