save() :用来保存canvas的状态,save后可进行平移等操作。入栈
restore():用来恢复canvas之前保存的状态,防止save之后的操作对后续绘制有影响。出栈
出栈的次数不能多于入栈的次数,故程序中restore()方法调用的次数不应该比save()方法多
save()和restore()方法要一起使用才会有效果
<body>
<canvas id="canvas" width="300" height="300" style="border:1px dashed gray;"></canvas>
</body>
<script type="text/javascript">
window.onload = function () {
var canvas = document.querySelector("#canvas");
if (canvas.getContext) {
var ctx = canvas.getContext("2d");
ctx.save();
ctx.fillStyle = "pink";
ctx.save();
ctx.fillStyle = "deeppink";
ctx.fillStyle = "blue";
ctx.save();
ctx.fillStyle = "red";
ctx.save();
ctx.fillStyle = "green";
ctx.save();
ctx.beginPath();
ctx.restore();
ctx.restore();
ctx.restore();
ctx.restore();
ctx.fillRect(50, 50, 100, 100);
}
}
</script>
根据上述代码,画图如下帮助理解
代码运行结果显示如下: