青草久久影院-青草久久伊人-青草久久久-青草久久精品亚洲综合专区-SM双性精跪趴灌憋尿调教H-SM脚奴调教丨踩踏贱奴

17站長(zhǎng)網(wǎng)

17站長(zhǎng)網(wǎng) 首頁 編程教程 Html5教程 查看內(nèi)容

HTML5 Canvas 狀態(tài)

我們?cè)赾anvas上繪制圖形的時(shí)候,經(jīng)常需要通過save()和restore()改變2D上下文的狀態(tài)。舉例來說,你在繪制直線或矩形的時(shí)候需要一種strokStyle,在繪制下一條直線或矩形的時(shí)候需要另一種strokStyle。又或者是不同的填充色,旋轉(zhuǎn)角度等

當(dāng)使用其2D上下文在html5畫布上進(jìn)行繪制時(shí),該2D上下文處于某種狀態(tài)。您可以通過操縱2D上下文屬性(例如fillStyle 和)來設(shè)置該狀態(tài)strokeStyle。所有這些操作總共稱為2D上下文state。
通常,在畫布上繪制時(shí),您需要在繪制過程中更改2D上下文的狀態(tài)。例如,strokStyle對(duì)于一條直線或矩形,可能需要一個(gè),而strokeStyle對(duì)于其他直線或矩形,則可能需要另一個(gè) 。或其他輪換,或其他。
由于在繪制每個(gè)形狀之前設(shè)置完整狀態(tài)非常麻煩,因此可以將狀態(tài)推送到狀態(tài)堆棧上。然后可以從此狀態(tài)堆棧中彈出較早的狀態(tài)。這是在臨時(shí)狀態(tài)更改后恢復(fù)較早狀態(tài)的快速方法.

html5 Canvas畫布狀態(tài)示例

繪圖狀態(tài)進(jìn)行壓棧和出棧的方法如下:

context.save();     // 將一個(gè)狀態(tài)壓入狀態(tài)棧中.
 
context.restore();  // 將最前面的狀態(tài)出棧,并設(shè)置到2d上下文中.

被保存在堆棧中后,您可以將多個(gè)狀態(tài)推送到該堆棧上,然后將其彈出。這是一個(gè)代碼示例:

<canvas id="ex1" width="500" height="100" hljs-string">1px solid #cccccc;">HTML5 Canvas not supported</canvas>
<script>var canvas  = document.getElementById("ex1");var context = canvas.getContext("2d");
context.fillStyle  ="#66ff66";
context.stroke;
context.linewidth  = 5;
 
context.fillRect  (5, 5, 50, 50);
context.strokeRect(5, 50);
 
context.save();
context.fillStyle = "#6666ff";
context.fillRect  (65, 50);
context.strokeRect(65, 50);
context.save();
context.strokeStyle = "#000099";
context.fillRect  (125, 50);
context.strokeRect(125, 50);
context.restore();
 
context.fillRect  (185, 50);
context.strokeRect(185, 50);
context.restore();
 
context.fillRect  (245, 50);
context.strokeRect(245, 50);
</script>

這是在畫布上繪制時(shí)上述代碼的結(jié)果:

HTML5 Canvas 狀態(tài)

狀態(tài)棧的用處

如果您更改畫布合成模式或轉(zhuǎn)換設(shè)置,并且需要在進(jìn)行更改之前先返回到設(shè)置,則狀態(tài)堆棧非常有用。通過保存和恢復(fù)構(gòu)圖模式或轉(zhuǎn)換設(shè)置,可以確保正確重置了它。否則,要返回到之前的確切設(shè)置可能會(huì)有些困難。

2D上下文的狀態(tài)有哪些?

所有2D上下文屬性都是保存和還原狀態(tài)的一部分。但是,在畫布上繪制的卻不是。這意味著,在還原狀態(tài)時(shí),您不會(huì)還原繪圖區(qū)域本身。您僅還原2D上下文設(shè)置(屬性值)。這些設(shè)置包括:

  • fillStyle

  • font

  • globalAlpha

  • globalCompositionoperation

  • lineCap

  • lineJoin

  • linewidth

  • miterLimit

  • shadowBlur

  • shadowColor

  • shadowOffsetX

  • shadowOffsetY

  • strokeStyle

  • strokeStyle

  • textAlign

  • textBaseline

  • The clipping region

  • The transformation matrix (通過context.rotate()+ 旋轉(zhuǎn)+平移context.setTransform())

此列表并不詳盡。

隨著標(biāo)準(zhǔn)的發(fā)展,更多的屬性可能成為2D上下文狀態(tài)的一部分。

返回頂部
主站蜘蛛池模板: 久久亚洲AV成人无码动态图 | 久久国内精品视频 | 午夜日本大胆裸艺术 | 四房播播开心色播 | 狠狠插影院 | 国产人妻麻豆蜜桃色在线 | 国产不卡一卡2卡三卡4卡网站 | 亚洲一区在线观看无码欧美 | 解开白丝老师的短裙猛烈进入 | gogogo免费视频观看 | 日本久久中文字幕 | 国产精品久久久久久免费播放 | 亚洲无码小格式 | 湖南张丽大战黑人hd视频 | 欧洲另类一二三四区 | 美妇教师双飞后菊 | 日本熟妇乱人伦A片精品软件 | 美国一级黄色 | 国产爱豆果冻传媒在线观看视频 | yellow在线中文 | 亚洲视频一区 | 在线二区 中文 无码 | 伊人久久大香线蕉综合亚洲 | YELLOW高清在线观看2019 | 国产一级毛片在线 | 5566精品资源在线播放 | 92国产精品午夜免费福利视频 | 久久久欧美国产精品人妻噜噜 | 日日干夜夜爽 | 日韩亚射吧 | 国产成人精品免费青青草原app | 欧美三级在线完整版免费 | AV久久久囯产果冻传媒 | 久久中文字幕乱码免费 | 国产国产人免费观看在线视频 | 被黑人做的白浆直流 | 双性诱受灌满哭求饶BL | 曰批国产精品视频免费观看 | 91亚洲 欧美 国产 制服 动漫 | 99热久久这里只精品国产WWW | 少妇仑乱A毛片 |