canvas restore()
此方法可以還原一次最近儲存的狀態,當然還原方式具有規則。
為便於記憶與理解,從方法名稱入手,restore翻譯成漢語具有"復原"或者"還原"的意思。
語法結構:
[JavaScript] 純文字檢視 複製程式碼ctx.restore();
被還原的狀態儲存在一個狀態棧中。
圖示如下:
上面是一個簡單的狀態棧示意圖,說明如下:
(1).通過save()方法可以儲存狀態。
(2).遵照先入後出的原則,每一次呼叫restore() 方法會還原一個狀態。
(3).第一次呼叫會彈出狀態3,第二次呼叫彈出狀態2,以此類推。
關於save()方法的具體用法可以參閱canvas save()一章節。
瀏覽器相容:
(1).IE9+瀏覽器支援此方法。
(2).edge瀏覽器支援此方法。
(3).谷歌瀏覽器支援此方法。
(4).火狐瀏覽器支援此方法。
(5).Opera瀏覽器支援此方法。
(6).Safari瀏覽器支援此方法。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas { border: 2px dotted #ccc; margin:50px; } </style> <script> window.onload = () => { let cvs = document.getElementById("myCanvas"); let ctx = cvs.getContext("2d"); ctx.fillStyle = "rgba(255,0,0,1)"; //儲存前面的狀態 ctx.save(); ctx.beginPath(); ctx.rect(10,10, 110, 110); ctx.fill(); //設定畫筆的顏色 ctx.fillStyle = '#0f0'; ctx.fillRect(100, 100, 111, 111); //還原前面儲存的狀態 ctx.restore(); ctx.fillRect(200, 200, 111, 111); } </script> </head> <body> <canvas id="myCanvas" width="350" height="300"></canvas> </body> </html>
程式碼執行效果截圖如下:
核心程式碼分析如下:
[JavaScript] 純文字檢視 複製程式碼ctx.fillStyle = "rgba(255,0,0,1)";
上述程式碼規定紅色為填充顏色,且完全不透明。
[JavaScript] 純文字檢視 複製程式碼ctx.save();
通過save()方法可以儲存前面的填充狀態。
[JavaScript] 純文字檢視 複製程式碼ctx.rect(10,10, 110, 110); ctx.fill();
上述程式碼繪製了一個矩形,採用前面定義的顏色進行填充。
於是此矩形呈現紅色,這個應該沒有什麼疑問。
[JavaScript] 純文字檢視 複製程式碼ctx.fillStyle = '#0f0'; ctx.fillRect(100, 100, 111, 111);
上述程式碼規定新的填充顏色,然後通過fillRect()繪製一個填充矩形。
也就是我們看到的大致是綠顏色的矩形圖案,關於上述用到兩個繪製矩形兩個方法參閱如下文章:
(1).canvas rect()方法一章節。
(2).canvas fillRect() 方法一章節。
[JavaScript] 純文字檢視 複製程式碼//還原前面儲存的狀態 ctx.restore(); ctx.fillRect(200, 200, 111, 111);
通過restore()方法可以彈出狀態棧中一個狀態。
當前狀態棧中只有一個狀態,也就是填充顏色,呼叫上述方法後,填充顏色得到圓環。
然後應用到fillRect()方法,對矩形進行填充,所以顏色也是紅色。
相關文章
- canvas save()和restore()CanvasREST
- Android 高階UI9 Canvas save和restore例項解析AndroidUICanvasREST
- guarantee restore points-Flashback after RMAN restoreREST
- DOCKER特性 - LIVE RESTOREDockerREST
- DBMS_BACKUP_RESTORE.DBMS_BACKUP_RESTORE用於特殊情況下的恢復REST
- git操作之二:git restoreGitREST
- provider for back&restore app datyaIDERESTAPP
- [LeetCode] 93. Restore IP AddressesLeetCodeREST
- git restore極簡使用記錄GitREST
- Crunchy PostgreSQL database restore via pgo commandSQLDatabaseRESTGo
- Reboot Restore Rx Pro中文版bootREST
- python leetcode 93. Restore IP AddressesPythonLeetCodeREST
- [20190228]Backup Restore Throttle sleep.txtREST
- RMAN restore validate database報ORA-19693RESTDatabase
- db2備份恢復(backup restore)DB2REST
- rman 還原歸檔日誌(restore archivelogRESTHive
- iptables報錯!iptables-restore unable to initialize table 'filterRESTFilter
- HowTo Restore RMAN Disk backups of RAC Database to Single Instance On Another NoRESTDatabase
- canvasCanvas
- SQLSERVER 2012從2000還原失敗:Restore of database failedSQLServerRESTDatabaseAI
- WPF C# create canvas and draw ellipse in canvasC#Canvas
- canvas createPattern()Canvas
- canvas createImageData()Canvas
- canvas translate()Canvas
- canvas rotate()Canvas
- canvas scale()Canvas
- canvas measureText()Canvas
- canvas fillText()Canvas
- canvas save()Canvas
- canvas clearRect()Canvas
- canvas fillRect()Canvas
- canvas(三)Canvas
- canvas toDataURL()Canvas
- canvas toBlob()Canvas
- canvas rect()Canvas
- canvas strokeStyleCanvas
- canvas lineTo()Canvas
- canvas strokeRect()Canvas