日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

如何存储和恢复 HTML5 Canvas 状态

發布時間:2023/12/2 HTML 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何存储和恢复 HTML5 Canvas 状态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

當我們在 HTML5 Canvas 上使用其 2D 上下文進行圖形繪制的時候,可以通過操作 2D 上下文的屬性來繪制不同風格的圖形,例如不同字體、填充等等。

通常情況下,在畫布上的繪圖時,您需要更改在繪制的2D背景下的狀態。例如,你可能需要一個strokStyle 一行或矩形,另有其他行或矩形strokeStyle。或不同的旋轉,或別的東西。

設置繪圖的屬性非常繁瑣,每次更改時都要從來一次,本文將介紹如何利用堆棧來保持繪圖的屬性并在需要的時候隨時恢復。例如我們可以通過下面兩個方法來實現保存繪圖屬性和獲取屬性:

?context.save();???? // state pushed onto stack.?

?context.restore();? // state popped from stack, and set on 2D Context.

你可以保持多個繪圖屬性到堆棧中,并在需要的時候從堆棧中彈出:

var canvas? = document.getElementById("ex1");
var context = canvas.getContext("2d");

context.fillStyle? ="#66ff66";
context.strokeStyle="#990000";
context.lineWidth? = 5;

context.fillRect? (5, 5, 50, 50);
context.strokeRect(5, 5, 50, 50);

context.save();

context.fillStyle = "#6666ff";

context.fillRect? (65, 5, 50, 50);
context.strokeRect(65, 5, 50, 50);

context.save();

context.strokeStyle = "#000099";

context.fillRect? (125, 5, 50, 50);
context.strokeRect(125, 5, 50, 50);

context.restore();

context.fillRect? (185, 5, 50, 50);
context.strokeRect(185, 5, 50, 50);

context.restore();

context.fillRect? (245, 5, 50, 50);
context.strokeRect(245, 5, 50, 50);


下圖是采用以上代碼的繪制結果:

?

?

如果你頻繁的做各種復雜的繪圖設置時,狀態堆棧是相當有用的。

所有的 2D 繪圖上下文屬性都是可保存和恢復的屬性,但繪制的內容可不是,也就是說你恢復了繪圖上下文,并不會恢復其所繪制的圖形。

2D 繪圖上下文包括如下設置:

fillStyle
font
globalAlpha
globalCompositionOperation
lineCap
lineJoin
lineWidth
miterLimit
shadowBlur
shadowColor
shadowOffsetX
shadowOffsetY
strokeStyle
strokeStyle
textAlign
textBaseline
The clipping region
The transformation matrix (rotations translations via context.rotate() context.setTransform())
這個列表并不完整,還不包含一些標準的屬性。

?

總結

以上是生活随笔為你收集整理的如何存储和恢复 HTML5 Canvas 状态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。