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

17站長網

17站長網 首頁 編程教程 Html5教程 查看內容

HTML5 Canvas 狀態

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

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

html5 Canvas畫布狀態示例

繪圖狀態進行壓棧和出棧的方法如下:

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

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

  1. <canvas id="ex1" width="500" height="100" hljs-string">1px solid #cccccc;">HTML5 Canvas not supported</canvas>
  2. <script>var canvas  = document.getElementById("ex1");var context = canvas.getContext("2d");
  3. context.fillStyle  ="#66ff66";
  4. context.stroke;
  5. context.linewidth  = 5;
  6.  
  7. context.fillRect  (5, 5, 50, 50);
  8. context.strokeRect(5, 50);
  9.  
  10. context.save();
  11. context.fillStyle = "#6666ff";
  12. context.fillRect  (65, 50);
  13. context.strokeRect(65, 50);
  14. context.save();
  15. context.strokeStyle = "#000099";
  16. context.fillRect  (125, 50);
  17. context.strokeRect(125, 50);
  18. context.restore();
  19.  
  20. context.fillRect  (185, 50);
  21. context.strokeRect(185, 50);
  22. context.restore();
  23.  
  24. context.fillRect  (245, 50);
  25. context.strokeRect(245, 50);
  26. </script>

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

HTML5 Canvas 狀態

狀態棧的用處

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

2D上下文的狀態有哪些?

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

  • fillStyle

  • font

  • globalAlpha

  • globalCompositionoperation

  • lineCap

  • lineJoin

  • linewidth

  • miterLimit

  • shadowBlur

  • shadowColor

  • shadowOffsetX

  • shadowOffsetY

  • strokeStyle

  • strokeStyle

  • textAlign

  • textBaseline

  • The clipping region

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

此列表并不詳盡。

隨著標準的發展,更多的屬性可能成為2D上下文狀態的一部分。

返回頂部
主站蜘蛛池模板: 91久久偷偷做嫩草影院免费看 | 第一次处破女完整版电影 | 狠狠撩色姣姣综合久久 | 亚洲人成在线观看一区二区 | 99国产在线精品视频 | 亚洲日韩中文字幕日本有码 | 欧美亚洲精品一区二三区8V | 国产亚洲精品看片在线观看 | 岛国大片在线观看完整版 | 久久精品一卡二卡三卡四卡视频版 | 么公一夜要了我一八次视频HD | 在线观看插女生免费版 | 亚洲综合视频 | 欧美一级久久久久久久久大 | 9966在线观看免费高清电影 | 久久久96人妻无码精品蜜桃 | 少妇高潮惨叫久久久久久欧美 | 免费色片播放器 | 2019久久视频这里有精品15 | 边做边爱播放3免费观看 | 耻辱诊察室1一4集动漫在线观看 | 高清观看ZSHH96的视频素材 | a级精品九九九大片免费看 A级韩国乱理伦片在线观看 | 亚洲乱码日产精品BD在线下载 | 亚洲国产日韩欧美视频二区 | 国产亚洲精品视频亚洲香蕉视 | 蜜桃成熟时2在线 | 小xav导航| 99国产精品欲AV蜜桃臀麻豆 | 国产亚洲视频精彩在线播放 | 日本最新在线不卡免费视频 | 午夜视频在线网站 | 一本道亚洲区免费观看 | 日本黄 色大片全 | 男人插女人逼逼 | 邪恶肉肉全彩色无遮盖 | 含羞草免费完整视频在线观看 | 777黄色片 | 99热这里只就有精品22 | 男男高h浪荡受h | 中文字幕在线观看网址 |