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
- OpenHarmony頁面級UI狀態儲存:LocalStorageUI
- iOS UI狀態儲存和恢復(三)iOSUI
- 使用NAS動態儲存卷建立有狀態應用
- 利用Dectorator分模組儲存Vuex狀態(上)Vue
- 利用Dectorator分模組儲存Vuex狀態(下)Vue
- 分散式儲存Ceph之PG狀態詳解分散式
- 19c pdb如何儲存啟動狀態
- Amazon EKS 上有狀態服務啟用儲存加密加密
- sqlserver資料庫還原儲存過程指令碼SQLServer資料庫儲存過程指令碼
- 三步還原mac上沒儲存的Word文件Mac
- iNeuOS工業網際網路作業系統,釋出實時儲存方式:實時儲存、變化儲存、定時儲存,增加裝置振動狀態和電能狀態監測驅動,v3.6.2作業系統
- 物件和函式的區別就是物件可以儲存狀態物件函式
- React-Keeper 前端路由快取 儲存狀態(大部分轉)React前端路由快取
- 【Flutter 知識集錦】從 restorationId 來說臨時狀態儲存FlutterREST
- 【常用命令】 Git 還原修改檔案到原始狀態Git
- 儲存過程與儲存函式儲存過程儲存函式
- 固態硬碟儲存原理硬碟
- 前端狀態管理與有限狀態機前端
- 國產儲存晶片現狀如何?晶片
- React 狀態管理:狀態與生命週期React
- 5、域滲透——利用SYSVOL還原組策略中儲存的密碼密碼
- 原創:oracle 儲存過程Oracle儲存過程
- 前端儲存除了 localStorage 還有啥前端
- 利用結構體儲存實體狀態——2024TapTap聚光燈GameJam(二)結構體APTGAM
- 學習 Avalonia 框架筆記 設定 X11 視窗從最小化狀態還原為正常狀態框架筆記
- win10怎麼恢復系統初始狀態 win10系統還原成原始狀態的方法Win10
- oracle之樹狀結構的儲存與展示(遞迴查詢)Oracle遞迴
- 雲原生儲存詳解:容器儲存與 K8s 儲存卷K8S
- tensorflow:一個簡單的python訓練儲存模型,java還原模型方法Python模型Java
- Solidity語言學習筆記————40、儲存中狀態變數的佈局Solid筆記變數
- 原來還能這樣看Java執行緒的狀態及轉換Java執行緒
- 動態表單儲存設計
- Vuex 單狀態庫 與 多模組狀態庫Vue
- 使用canvas儲存網頁為pdf檔案支援跨域Canvas網頁跨域
- 儲存新圖譜:DNA儲存的邊界與天地
- docker儲存配置與管理Docker