save() 可以把保存坐标系的平移数据,缩放数据,旋转数据
restore() 回复保存状态的坐标系的平移数据,缩放数据,旋转数据
如一下代码
<canvas id="canvas" width="500" height="500" style="width: 500px; height: 500px; border: 1ex solid black;"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.translate(100,100);
ctx.rotate(Math.PI / 4);
ctx.strokeRect(0,0,100,50)
ctx.beginPath()
ctx.fillRect(200,0,100,50)
</script>
效果图
旋转与平移都是全局更改,所以黑色方块才会显示到这个位置,可我想让黑色放块按照未修改前的就行渲染
如一下代码
<canvas id="canvas" width="500" height="500" style="width: 500px; height: 500px; border: 1ex solid black;"></canvas>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
ctx.save() // 保存初始坐标信息
ctx.beginPath();
ctx.translate(100,100);
ctx.rotate(Math.PI / 4);
ctx.strokeRect(0,0,100,50)
ctx.beginPath()
ctx.restore() // 恢复保存的信息
ctx.fillRect(200,0,100,50)
</script>
效果如下