HTML5 Canvas

<canvas> 標籤定義圖形,比如圖表和其他影象,您必須使用指令碼來繪製圖形。

在畫布上(Canvas)畫一個紅色矩形,漸變矩形,彩色矩形,和一些彩色的文字。

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

什麼是 canvas?

HTML5 <canvas> 元素用於圖形的繪製,通過指令碼 (通常是JavaScript)來完成.

<canvas> 標籤只是圖形容器,您必須使用指令碼來繪製圖形。

你可以通過多種方法使用 canvas 繪製路徑,盒、圓、字元以及新增影象。


瀏覽器支援

表格中的數字表示支援 <canvas> 元素的第一個瀏覽器版本號。

元素
<canvas> 4.0 9.0 2.0 3.1 9.0

建立一個畫布(Canvas)

一個畫布在網頁中是一個矩形框,通過 <canvas> 元素來繪製.

注意: 預設情況下 <canvas> 元素沒有邊框和內容。

<canvas>簡單例項如下:

<canvas id="myCanvas" width="200" height="100"></canvas>

注意: 標籤通常需要指定一個id屬性 (指令碼中經常引用), width 和 height 屬性定義的畫布的大小.

提示:你可以在HTML頁面中使用多個 <canvas> 元素.

使用 style 屬性來新增邊框:

例項

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"> </canvas>



使用 JavaScript 來繪製圖像

canvas 元素本身是沒有繪圖能力的。所有的繪製工作必須在 JavaScript 內部完成:

例項

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.fillStyle="#FF0000"; ctx.fillRect(0,0,150,75);

例項解析:

首先,找到 <canvas> 元素:

var c=document.getElementById("myCanvas");

然後,建立 context 物件:

var ctx=c.getContext("2d");

getContext("2d") 物件是內建的 HTML5 物件,擁有多種繪製路徑、矩形、圓形、字元以及新增影象的方法。

下面的兩行程式碼繪製一個紅色的矩形:

ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);

設定fillStyle屬性可以是CSS顏色,漸變,或圖案。fillStyle 預設設定是#000000(黑色)。

fillRect(x,y,width,height) 方法定義了矩形當前的填充方式。


Canvas 座標

canvas 是一個二維網格。

canvas 的左上角座標為 (0,0)

上面的 fillRect 方法擁有引數 (0,0,150,75)。

意思是:在畫布上繪製 150x75 的矩形,從左上角開始 (0,0)。

座標例項

如下圖所示,畫布的 X 和 Y 座標用於在畫布上對繪畫進行定位。滑鼠移動的矩形框上,顯示定位座標。

X
Y

Canvas - 路徑

在Canvas上畫線,我們將使用以下兩種方法:

  • moveTo(x,y) 定義線條開始座標
  • lineTo(x,y) 定義線條結束座標

繪製線條我們必須使用到 "ink" 的方法,就像stroke().

例項

定義開始座標(0,0), 和結束座標 (200,100)。然後使用 stroke() 方法來繪製線條:

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

JavaScript:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.moveTo(0,0); ctx.lineTo(200,100); ctx.stroke();

嘗試一下 ?

在canvas中繪製圓形, 我們將使用以下方法:

arc(x,y,r,start,stop)

實際上我們在繪製圓形時使用了 "ink" 的方法, 比如 stroke() 或者 fill().

例項

使用 arc() 方法 繪製一個圓:

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

JavaScript:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ctx.stroke();

嘗試一下 ?


Canvas - 文字

使用 canvas 繪製文字,重要的屬性和方法如下:

  • font - 定義字型
  • fillText(text,x,y) - 在 canvas 上繪製實心的文字
  • strokeText(text,x,y) - 在 canvas 上繪製空心的文字

使用 fillText():

例項

使用 "Arial" 字型在畫布上繪製一個高 30px 的文字(實心):

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

JavaScript:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font="30px Arial"; ctx.fillText("Hello World",10,50);

嘗試一下 ?

使用 strokeText():

例項

使用 "Arial" 字型在畫布上繪製一個高 30px 的文字(空心):

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

JavaScript:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font="30px Arial"; ctx.strokeText("Hello World",10,50);

嘗試一下 ?


Canvas - 漸變

漸變可以填充在矩形, 圓形, 線條, 文字等等, 各種形狀可以自己定義不同的顏色。

以下有兩種不同的方式來設定Canvas漸變:

  • createLinearGradient(x,y,x1,y1) - 建立線條漸變
  • createRadialGradient(x,y,r,x1,y1,r1) - 建立一個徑向/圓漸變

當我們使用漸變物件,必須使用兩種或兩種以上的停止顏色。

addColorStop()方法指定顏色停止,引數使用座標來描述,可以是0至1.

使用漸變,設定fillStyle或strokeStyle的值為 漸變,然後繪製形狀,如矩形,文字,或一條線。

使用 createLinearGradient():

例項

建立一個線性漸變。使用漸變填充矩形:

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

JavaScript:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); // 建立漸變 var grd=ctx.createLinearGradient(0,0,200,0); grd.addColorStop(0,"red"); grd.addColorStop(1,"white"); // 填充漸變 ctx.fillStyle=grd; ctx.fillRect(10,10,150,80);

嘗試一下 ?

使用 createRadialGradient():

例項

建立一個徑向/圓漸變。使用漸變填充矩形:

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

JavaScript:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); // 建立漸變 var grd=ctx.createRadialGradient(75,50,5,90,60,100); grd.addColorStop(0,"red"); grd.addColorStop(1,"white"); // 填充漸變 ctx.fillStyle=grd; ctx.fillRect(10,10,150,80);

嘗試一下 ?


Canvas - 影象

把一幅影象放置到畫布上, 使用以下方法:

  • drawImage(image,x,y)

使用影象:

The Scream

例項

把一幅影象放置到畫布上:

你的瀏覽器不支援 HTML5 的 <canvas> 元素.

JavaScript:

var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("scream"); ctx.drawImage(img,10,10);

嘗試一下 ?


HTML Canvas 參考手冊

標籤的完整屬性可以參考Canvas 參考手冊.

HTML <canvas> 標籤

Tag 描述
<canvas> HTML5 的 canvas 元素使用 JavaScript 在網頁上繪製圖像。

更多內容可參考:學習 HTML5 Canvas 這一篇文章就夠了