canvas里的save和restore形成一个类似于作用域的范围,其目的是为了保存调用save之前的canvas状态,保存之后,我们就可以在调用restore语句之前,对canvas状态进行任意修改,调用restore就可以恢复之前的canvas状态。
通俗理解:我们在 修改一个文件时,担心出错,会先备份(save)这个文件,就算出错,我们可以随时恢复(restore)这个文件
var drawing=document.getElementById('drawing')
if (drawing.getContext){
var ctx=drawing.getContext('2d')//canvas是至上而下,同步执行的
ctx.fillStyle='red' //往样式容器里添加一个红色样式
ctx.save() //往样式栈里添加一个红色样式
ctx.fillStyle='skyblue' //覆盖样式容器里的样式,此时样式容器里的颜色变成蓝色
ctx.beginPath()
ctx.fillRect(50,50,100,100) //由于样式容器里的颜色被覆盖成蓝芭,所以画出一个蓝色矩形,
ctx.restore() //把样式栈里的红色放到样式容器中,此时蓝色被覆盖成红色
ctx.beginPath()
ctx.fillRect(100,100,100,100)
}
这就是为什么先画出一个蓝色矩形,再画出一个红色矩形的原因。
