Canvas狀態的保存與恢復


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()方法被調用之前。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM