久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

HTML5 CANVAS:繪圖狀態和狀態棧

當我們在HTML5 canvas中使用2D上下文來繪制圖形的時候,2D上下文會處于某種狀態中。你可以通過操縱2D上下文的屬性來設置這些狀態。,HTML5中國,中國最大的HTML5中文門戶。
1.jpg

  當我們在HTML5 canvas中使用2D上下文來繪制圖形的時候,2D上下文會處于某種狀態中。你可以通過操縱2D上下文的屬性來設置這些狀態,例如fillStyle屬性和strokeStyle屬性。所有的這些操作被稱為2D上下文的state(狀態)。

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

  我們不可能在繪制圖形之前就設置好所有圖形的狀態,但是我們可以將當前的狀態壓棧到一個狀態棧中。在這個狀態棧中,最后壓入的狀態將最先被彈出。通過這種方式我們可以非常方便的恢復到前一次的繪圖狀態。

  HTML5 CANVAS繪圖狀態的例子
  將一個繪圖狀態進行壓棧和出棧的方法如下:
  1. context.save();     // 將一個狀態壓入狀態棧中

  2. context.restore();  // 將最前面的狀態出棧,并設置到2d上下文中

復制代碼

  對于一個狀態棧,你可以壓入多個狀態,然后在將它們依次彈出。來看下面的例子:
  1. var canvas  = document.getElementById("ex1");
  2. var context = canvas.getContext("2d");

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

  6. context.fillRect  (5, 5, 50, 50);
  7. context.strokeRect(5, 5, 50, 50);

  8. context.save();

  9. context.fillStyle = "#6666ff";

  10. context.fillRect  (65, 5, 50, 50);
  11. context.strokeRect(65, 5, 50, 50);

  12. context.save();

  13. context.strokeStyle = "#000099";

  14. context.fillRect  (125, 5, 50, 50);
  15. context.strokeRect(125, 5, 50, 50);

  16. context.restore();

  17. context.fillRect  (185, 5, 50, 50);
  18. context.strokeRect(185, 5, 50, 50);

  19. context.restore();

  20. context.fillRect  (245, 5, 50, 50);
  21. context.strokeRect(245, 5, 50, 50);   
復制代碼

  上面的代碼得到的結果如下:

4.jpg

  狀態棧的用處
  狀態棧對于改變canvas的合成模式,圖形的轉換設置和在需要回到以前設置的狀態的場景中十分有用。

  通過保存和恢復合成模式或圖形轉換設置,你可以確保它們被正確的重置。否則,你要想恢復到以前設置的某種狀態時十分困難的。

  2D上下文的狀態有哪些?
  所有的2D上下文的屬性都是可以保存和恢復的屬性。你在恢復一個狀態的時候,繪制區域并不會自動進行恢復。你恢復的僅僅是2D上下文的設置(屬性值),這些設置包括:

  •   fillStyle
  •   font
  •   globalAlpha
  •   globalCompositionOperation
  •   lineCap
  •   lineJoin
  •   lineWidth
  •   miterLimit
  •   shadowBlur
  •   shadowColor
  •   shadowOffsetX
  •   shadowOffsetY
  •   strokeStyle
  •   textAlign
  •   textBaseline
  •   clipping區域
  •   轉換矩陣


  上面的列表并不是完整的列表。還有更多的屬性屬于2D上下文狀態的一部分。


  本文版權屬于jQuery之家,轉載請注明出處:http://www.htmleaf.com/ziliaoku/ ... g/201507252298.html

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了基于HTML5 Canvas的3D動態Chart圖表的示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了HTML5 Canvas 實現圓形進度條并顯示數字百分比效果示例,具有一定的參考價值,有興趣的可以了解一下
這篇文章主要介紹了HTML5 Canvas 旋轉風車繪制,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
這篇文章主要介紹了html5 canvas合成海報所遇問題及解決方案總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
由于實際運行環境是在瀏覽器中,因此性能還取決于JavaScript解釋器的效率,指定的FPS幀速在低性能解釋器中可能不會達到,所以這部分不是開發者能夠決定的,開發者能作的是盡可能通
本文將使用HTML5提供的VideoAPI做一個自定義的視頻播放器,需要用到HTML5提供的video標簽、以及HTML5提供的對JavascriptAPI的擴展。,HTML5中國,中國最大的HTML5中文門戶。
主站蜘蛛池模板: 欧美日韩看片 | 欧美精品一区二区三区在线 | 欧美精品首页 | 免费看啪啪网站 | 日韩精品一区二区三区视频播放 | 国产成人精品a视频一区www | 精品日韩欧美一区二区 | 在线看免费| 亚洲高清免费 | 国产精品免费一区二区三区 | 国产乱码精品一区二区三区中文 | 午夜男人免费视频 | 精品视频一区二区三区在线观看 | 成人超碰 | 亚洲国产一区二区在线 | 亚洲欧美视频在线观看 | 国产97视频在线观看 | 久久99久久99精品免视看婷婷 | 欧美精品一区三区 | 在线观看亚洲专区 | 欧美性生活免费 | 国产精品视频观看 | 久久最新精品视频 | 九色.com | 综合中文字幕 | 99精品一区二区 | 一级黄在线观看 | 操操日 | 亚洲精品一区在线 | 欧洲精品一区 | 成人av播放 | www.亚洲一区二区三区 | 国产小视频在线 | 美女一级黄 | 中文字幕av网 | 日本黄色的视频 | 一区二区免费视频 | 免费艹逼视频 | 黄a在线观看 | 国产精品1区 | 四虎影院免费在线播放 |