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

17站長網(wǎng)

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

HTML5 Canvas 狀態(tài)

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

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

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

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

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

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

<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>

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

HTML5 Canvas 狀態(tài)

狀態(tài)棧的用處

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

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

所有2D上下文屬性都是保存和還原狀態(tài)的一部分。但是,在畫布上繪制的卻不是。這意味著,在還原狀態(tài)時,您不會還原繪圖區(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())

此列表并不詳盡。

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

返回頂部
主站蜘蛛池模板: 欧美含羞草免费观看全部完 | 蜜臀色欲AV无人A片一区 | 国产成人小视频在线观看 | 抽插内射高潮呻吟V杜V | 亚洲日本欧美国产在线视 | 国产成人自拍视频在线观看 | 出租屋自拍贵在真实15P | 亚洲熟伦熟女专区 | 两个奶被男人揉了一个晚上 | 国产日韩欧美综合久久 | 双性将军粗壮H灌满怀孕 | 国产白浆视频在线播放 | 欧美性狂猛AAAAAA | 超碰97人人做人人爱网站 | 久就热视频精品免费99 | 国产日韩欧美有码在线视频 | 校花在公车上被内射好舒服 | 成人国内精品久久久久影院 | 亚洲高清在线天堂精品 | 久久机热视频免费 | 大陆女人内谢69XXXORG | 欧美巨大xxxx做受高清 | 久久婷婷五月免费综合色啪 | 高清国产在线观看 | 精品国产精品人妻久久无码五月天 | 日本护士在线观看 | 青柠在线观看视频在线高清 | 特黄特色大片免费播放器9 特黄特黄aaaa级毛片免费看 | 日本人奶水中文影片 | 久久亚洲国产中文字幕 | 四房播播最新地址 | 久久re视频这里精品09首页 | jk制服啪啪网站 | 成人麻豆日韩在无码视频 | a三级黄色片 | 国产99网站 | 一二三四电影完整版免费观看 | 亚洲国产成人在线视频 | 男人边吃奶边挵进去呻吟漫画 | 成人影院午夜久久影院 | 黄色aa大片|