1. 程式人生 > >Canvas狀態的保存與恢復

Canvas狀態的保存與恢復

訪問 store 所有 strong 屬於 composite ans 變換 ron

Canvas的API提供了save()restore()的方法,用於保存及恢復當前canvas繪圖環境的所有屬性。

save()與restore()方法可以嵌套調用

save()方法將當前繪圖環境壓入堆棧頂部,restore()方法從堆棧頂部彈出一組狀態信息,並據此恢復當前繪圖環境的各個狀態。這意味著可以嵌套調用save()和restore()方法。

save()

將當前canvas的狀態推送到一個保存canvas狀態的堆棧頂部。canvas狀態包括了當前的坐標變換(transformation)信息、裁剪區域以及所有canvas繪圖環境對象的屬性,包括strokeStyle、fillStyle與globalCompositeOperation等。

canvas狀態並不包括當前的路徑或位圖。只能通過調用beginPath()來重置路徑。至於位圖,它是canvas本身的一個屬性,並不屬於繪圖環境對象。

盡管位圖是canvas對象本身的屬性,但也可以通過繪圖環境對象來訪問(context.getImageData())

restore()

將canvas狀態堆棧頂部的條目彈出。原來保存於棧頂部的那一組狀態,在彈出之後,就被設置成canvas當前的狀態了。因此,在調用save()於restore()方法之間,對canvas狀態所進行的修改,其效果只會持續至restore()方法被調用之前。

Canvas狀態的保存與恢復