Canvas的基本用法

<canvas> 元素

<canvas id="tutorial" width="150" height="150"></canvas>

<canvas> 看起來和 <img> 元素很相像,唯一的不同就是它並沒有 src 和 alt 屬性。

實際上,<canvas> 標籤只有兩個屬性—— width和height。

這些都是可選的,並且同樣利用 DOM properties 來設置。當沒有設置寬度和高度的時候,canvas會初始化寬度爲300像素和高度爲150像素。

該元素可以使用CSS來定義大小,但在繪製時圖像會伸縮以適應它的框架尺寸:如果CSS的尺寸與初始畫布的比例不一致,它會出現扭曲。

*注意: 如果你繪製出來的圖像是扭曲的, 嘗試在<canvas>的屬性中明確規定寬和高,而不是使用CSS。

<canvas>元素可以像任何一個普通的圖像一樣(有margin,border,background等等屬性)這些樣式,然而,不會影響在canvas中的實際圖像。當開始時沒有爲canvas規定樣式規則,其將會完全透明

替換內容

<canvas>元素不同於在其中的<img>標籤,就像<video><audio>,或者 <picture>元素一樣,很容易定義一些替代內容。由於某些較老的瀏覽器(尤其是IE9之前的IE瀏覽器)或者文本瀏覽器不支持HTML元素”canvas”,在這些瀏覽器上你應該總是能展示替代內容:

<canvas>標籤中提供了替換內容。支持<canvas>的瀏覽器將會忽略在容器中包含的內容,並且只是正常渲染canvas。

就像這樣:

<canvas id="stockGraph" width="150" height="150">
  current stock price: $3.15 +0.15
</canvas>

<canvas id="clock" width="150" height="150">
  <img src="images/zero.png" width="150" height="150" alt=""/>
</canvas>

*注意不要忘掉</canvas> 結束標籤,如果結束標籤不存在,則文檔的其餘部分會被認爲是替代內容,將不會顯示出來。

如果不需要替代內容,一個簡單的

渲染上下文(The rendering context)

<canvas> 元素創造了一個固定大小的畫布,它公開了一個或多個渲染上下文,其可以用來繪製和處理要展示的內容。我們將會將注意力放在2D渲染上下文中。其他種類的上下文也許提供了不同種類的渲染方式;

canvas起初是空白的。爲了展示,首先腳本需要找到渲染上下文,然後在它的上面繪製。<canvas> 元素有一個叫做 getContext() 的方法,這個方法是用來獲得渲染上下文和它的繪畫功能。getContext()只有一個參數,上下文的格式。對於2D圖像而言,你可以使CanvasRenderingContext2D。

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

代碼的第一行通過使用 document.getElementById() 方法來爲 <canvas> 元素得到DOM對象。一旦有了元素對象,你可以通過使用它的getContext() 方法來訪問繪畫上下文。

檢查支持性

替換內容是用於在不支持 <canvas> 標籤的瀏覽器中展示的。通過簡單的測試getContext()方法的存在,腳本可以檢查編程支持性。上面的代碼片段現在變成了這個樣子:

var canvas = document.getElementById('tutorial');

if (canvas.getContext){
  var ctx = canvas.getContext('2d');
  // 繪製代碼
} else {
  // 不支持canvas
}

一個模板骨架

這裏的是一個最簡單的模板,我們之後就可以把它作爲之後的例子的起點。

<html>
  <head>
    <title>Canvas tutorial</title>
    <script type="text/javascript">
      function draw(){
        var canvas = document.getElementById('tutorial');
        if (canvas.getContext){
          var ctx = canvas.getContext('2d');
        }
      }
    </script>
    <style type="text/css">
      canvas { border: 1px solid black; }
    </style>
  </head>
  <body onload="draw();">
    <canvas id="tutorial" width="150" height="150"></canvas>
  </body>
</html>

上面的腳本中包含draw()的函數,當頁面加載結束的時候就會執行這個函數。

下圖爲執行後的樣子:

這裏寫圖片描述

一個簡單的小例旬

<html>
 <head>
  <script type="application/javascript">
    function draw() {
      var canvas = document.getElementById("canvas");
      if (canvas.getContext) {
      // 渲染上下文
        var ctx = canvas.getContext("2d");
        // 紅色方塊
        ctx.fillStyle = "rgb(200,0,0)"; // 定義顏色
        ctx.fillRect (10, 10, 55, 50); // 指定位置

        ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
        ctx.fillRect (30, 30, 55, 50);
      }
    }
  </script>
 </head>
 <body onload="draw();">
   <canvas id="canvas" width="150" height="150"></canvas>
 </body>
</html>

這裏寫圖片描述

發佈了19 篇原創文章 · 獲贊 12 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章