canvas 儲存與還原狀態
繪圖中,有些狀態可能會在未來某一個時刻會用到。
此時就需要將當前的儲存起來,然後再需要的時候將其還原。
使用如下兩個方法可以實現儲存於還原狀態功能:
(1).save():儲存狀態。
(2).restore():還原已儲存的狀態。
下面通過程式碼例項對兩個方法的功能進行一下演示:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style> canvas { border: 2px dotted #ccc; margin:50px; } </style> <script> window.onload = ()=> { let cvs = document.getElementById("canvas"); let ctx = cvs.getContext("2d"); ctx.fillStyle = "rgba(255,0,0,1)"; ctx.save(); ctx.beginPath(); ctx.rect(10,10, 50, 50); ctx.fill(); ctx.fillStyle = '#0f0'; ctx.fillRect(50, 50, 50, 50); ctx.restore(); ctx.fillRect(90, 90, 50, 50); } </script> </head> <body> <canvas id="canvas" width="200" height="150"></canvas> </body> </html>
上述程式碼執行效果截圖如下:
下面對程式碼進行一下分析:
[JavaScript] 純文字檢視 複製程式碼let cvs = document.getElementById("canvas"); let ctx = cvs.getContext("2d");
通過document.getElementById("ant")獲取<canvas>元素物件,也就是獲取畫布。
再利用<canvas>元素物件的getContext()方法獲取繪圖環境,具體參閱canvas getContext()一章節。
[JavaScript] 純文字檢視 複製程式碼ctx.fillStyle = "rgba(255,0,0,1)"; ctx.save();
利用fillStyle屬性設定填充顏色為rgba(255,0,0,1)。
然後呼叫save()可以將上述設定的狀態儲存起來,當然能夠儲存填充顏色。
[JavaScript] 純文字檢視 複製程式碼ctx.rect(10,10, 50, 50); ctx.fill();
通過上述程式碼繪製一個矩形,填充色是上面定義的rgba(255,0,0,1)。
[JavaScript] 純文字檢視 複製程式碼ctx.fillStyle = '#0f0'; ctx.fillRect(50, 50, 50, 50);
重新定義填充顏色為#0f0。然後繪製第二個矩形,也就是呈現綠色的矩形。
[JavaScript] 純文字檢視 複製程式碼ctx.restore(); ctx.fillRect(90, 90, 50, 50);
使用restore()方法可以還原之前儲存的狀態,自然填充色也會被重置為rgba(255,0,0,1)。
所以第三個矩形的顏色與第一個矩形的顏色相同。
相關閱讀:
(1).save()可以參閱canvas save()一章節。
(2).restore()可以參閱canvas restore()一章節。
相關文章
- Android Activity 重建之狀態儲存與恢復Android
- Azure Terraform(四)狀態檔案儲存ORM
- Android 元件系列-----Activity儲存狀態Android元件
- 利用Dectorator分模組儲存Vuex狀態(下)Vue
- iOS UI狀態儲存和恢復(三)iOSUI
- 利用Dectorator分模組儲存Vuex狀態(上)Vue
- OpenHarmony頁面級UI狀態儲存:LocalStorageUI
- Android中正確儲存view的狀態AndroidView
- 自動儲存、靜態儲存和動態儲存
- 使用NAS動態儲存卷建立有狀態應用
- 分散式儲存Ceph之PG狀態詳解分散式
- 19c pdb如何儲存啟動狀態
- [譯]Android Activity 和 Fragment 狀態儲存與恢復的最佳實踐AndroidFragment
- sqlserver資料庫還原儲存過程指令碼SQLServer資料庫儲存過程指令碼
- 使用儲存指令碼還原恢復資料庫指令碼資料庫
- Amazon EKS 上有狀態服務啟用儲存加密加密
- 使用history儲存列表頁ajax請求的狀態
- jQuery 操作checkbox翻頁儲存選中狀態jQuery
- cookie儲存使用者狀態 無session系統CookieSession
- 零程式碼儲存視窗執行狀態 (轉)
- 三步還原mac上沒儲存的Word文件Mac
- MYSQL innodb buffer 狀態資料的儲存和載入MySql
- 儲存NETAPP處於takeover狀態解決方法。APP
- Activity 知識梳理(3) Activity狀態儲存和恢復
- Fragment 知識梳理(2) Fragment 狀態儲存和恢復Fragment
- 【常用命令】 Git 還原修改檔案到原始狀態Git
- 瀏覽器後退操作時,表單狀態的還原瀏覽器
- Backup And Recovery User's Guide-使用閃回資料庫和還原點-保證還原點與儲存快照對比GUIIDE資料庫
- 物件和函式的區別就是物件可以儲存狀態物件函式
- dci中角色有狀態嗎,誰來怎麼儲存呢
- iNeuOS工業網際網路作業系統,釋出實時儲存方式:實時儲存、變化儲存、定時儲存,增加裝置振動狀態和電能狀態監測驅動,v3.6.2作業系統
- Canvas&Paint 知識梳理(2) Canvas 的儲存和恢復CanvasAI
- 國產儲存晶片現狀如何?晶片
- 不破壞原加密儲存的儲存解密(轉)加密解密
- React-Keeper 前端路由快取 儲存狀態(大部分轉)React前端路由快取
- 狀態模式還應細分模式
- 前端狀態管理與有限狀態機前端
- 儲存過程與儲存函式儲存過程儲存函式