posts - 48,comments - 156,trackbacks - 0

          一、<canvas>標簽

          Html5 引入了一個新的 <canvas> 標簽,這個標簽所代表的區(qū)域就好象一塊畫布,你的所有圖形繪制最后都要在這塊畫布上呈現(xiàn)。有了這個標簽,瀏覽器的圖形表現(xiàn)力被極大的提升,F(xiàn)lash 和 SilverLight 有沒有感到威脅呢?

          新聞鏈接:Google聲稱Chrome7瀏覽器將提速60倍

          <canvas>標簽的用法非常簡單,如下:

          <canvas id="tutorial" width="150" height="150" style="background-color:red;">
          你的瀏覽器不支持 Canvas 標簽
          </canvas>

          <canvas>標簽和普通的 HTML 標簽沒有多大的區(qū)別,你可以設(shè)置它的寬度和高度,可以通過 CSS 設(shè)置它的背景色、邊框樣式等等。你可以在 這里 找到關(guān)于 <canvas> 標簽的更多內(nèi)容。

          標簽中間的內(nèi)容是替換內(nèi)容,如果用戶的瀏覽器不支持 <canvas> 標簽,這段內(nèi)容就會被顯示出來;如果用戶的瀏覽器支持 <canvas> 標簽,則這段內(nèi)容將被忽略。

          上面的 <canvas> 代碼顯示效果如下:

          你的瀏覽器不支持 Canvas 標簽

          如果你用的是IE瀏覽器,可能只能看到一個提示;如果你用的是谷歌瀏覽器或者火狐瀏覽器,你就可以看到一個紅色的方塊區(qū)域。

           

          二、渲染上下文 Rendering Context

          其實光有 <canvas> 標簽我們并不能作任何事情,玩過 Windows 編程的同學都知道,在 Windows 里面繪圖先要得到一個設(shè)備上下文 DC ,在 <canvas> 標簽上繪圖也需要先得到一個渲染上下文,我們的圖形并不是直接畫到屏幕上的,而是先畫到上下文(Context)上,然后再刷新到屏幕上面的。

          題外話: 為什么要整出一個“上下文”這么復雜的概念呢?因為有了上下文對象,我們就可以讓各種不同的圖形設(shè)備在我們眼里面看起都是一個樣,我們只需要專注于繪圖,其他的工作就讓操作系統(tǒng)和瀏覽器去操心吧,說白了就是把各式各樣的具體變成統(tǒng)一的抽象,從而減輕我們的負擔。

          獲取上下文非常簡單,只需要如下兩行代碼:

          var canvas = document.getElementById('tutorial');
          var ctx = canvas.getContext('2d');

          首先獲取 canvas 對象,然后調(diào)用 canvas 對象的 getContext 方法,這個方法目前只能傳入?yún)?shù) "2d",不久的將來他可能會支持參數(shù) "3d",你一定明白那意味著什么,讓我們期待吧。

          getContext 方法返回一個 CanvasRenderingContext2D 對象 ,即渲染上下文對象,你可以在 這里 找到關(guān)于它的更多內(nèi)容,都是一些繪圖方法。

           

          三、瀏覽器支持

           除了在那些不支持的瀏覽器上顯示替用內(nèi)容之外,我們還可以通過腳本的方式來檢查瀏覽器是否支持 canvas ,方法很簡單,判斷 getContext 函數(shù)是否存在即可,代碼如下:

          var canvas = document.getElementById('tutorial'); 
          if (canvas.getContext){ 
              alert(
          "支持 <canvas> 標簽"); 
          else { 
              alert(
          "不支持 <canvas> 標簽"); 
          }

           

          四、一個小例子

          下面將用 HTML5 的繪圖功能演示一個上下移動的線條的例子, 具體的代碼將在后續(xù)內(nèi)容中給出

          你的瀏覽器不支持 <canvas>標簽,請使用 Chrome 瀏覽器 或者 FireFox 瀏覽器

           

          版權(quán)聲明:本文為原創(chuàng)文章,作者保留所有權(quán)利!歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者左洸和出處博客園

          //==========================================

          posted on 2010-09-17 23:45 左洸 閱讀(2919) 評論(2)  編輯  收藏 所屬分類: HTML5

          FeedBack:
          # re: HTML5邊玩邊學(1):畫布[未登錄]
          2010-10-08 16:36 | aaa
          怎么越點開始越快,還停不了  回復  更多評論
            
          # re: HTML5邊玩邊學(1):畫布
          2010-10-11 17:04 | Tkk
          @aaa
          因為你點一次就啟動一個setTimeout, 使它上下的速度加大了  回復  更多評論
            
          主站蜘蛛池模板: 兴化市| 吉安县| 大兴区| 崇仁县| 宣化县| 南木林县| 汶上县| 贵定县| 襄汾县| 五原县| 开化县| 鸡西市| 新平| 共和县| 剑川县| 凌源市| 新源县| 安阳县| 山西省| 贵定县| 北票市| 武穴市| 宜川县| 章丘市| 怀安县| 利辛县| 塔城市| 蛟河市| 资溪县| 冕宁县| 喀什市| 喀喇沁旗| 邛崃市| 铜梁县| 若羌县| 黔江区| 佛冈县| 全椒县| 天长市| 布尔津县| 简阳市|