canvas中的save和restore

2,297 阅读1分钟
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)

   }

这就是为什么先画出一个蓝色矩形,再画出一个红色矩形的原因。