HTML5 Canvas
<canvas> 標籤定義圖形,比如圖表和其他圖像,您必須使用腳本來繪製圖形。
在畫布上(Canvas)畫一個紅色矩形,漸變矩形,彩色矩形,和一些彩色的文字。
什麼是Canvas?
HTML5 <canvas> 元素用於圖形的繪製,通過腳本(通常是JavaScript)來完成.
<canvas> 標籤只是圖形容器,您必須使用腳本來繪製圖形。
你可以通過多種方法使用Canva繪製路徑,盒、圓、字符以及添加圖像。
瀏覽器支持
Internet Explorer 9+, Firefox, Opera, Chrome, 和Safari 支持<canvas> 元素.
注意: Internet Explorer 8及更早IE版本的瀏覽器不支持<canvas>元素.
創建一個畫布(Canvas)
一個畫佈在網頁中是一個矩形框,通過<canvas> 元素來繪製.
注意:默認情況下<canvas>元素沒有邊框和內容。
<canvas>簡單實例如下:
注意:標籤通常需要指定一個id屬性(腳本中經常引用), width和height屬性定義的畫布的大小.
提示:你可以在HTML頁面中使用多個<canvas>元素.
使用style 屬性來添加邊框:
實例
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);
</script>
嘗試一下»
實例解析:
首先,找到<canvas> 元素:
然後,創建context 對象:
getContext("2d") 對像是內建的HTML5 對象,擁有多種繪製路徑、矩形、圓形、字符以及添加圖像的方法。
下面的兩行代碼繪製一個紅色的矩形:
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 坐標用於在畫布上對繪畫進行定位。 鼠標移動的矩形框上,顯示定位坐標。
Canvas - 路徑
在Canvas上畫線,我們將使用以下兩種方法:
- moveTo(x,y)定義線條開始坐標
- lineTo(x,y)定義線條結束坐標
繪製線條我們必須使用到"ink" 的方法,就像stroke().
實例
定義開始坐標(0,0), 和結束坐標(200,100). 然後使用stroke() 方法來繪製線條:
JavaScript:
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() 方法繪製一個圓:
JavaScript:
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 的文字(實心):
JavaScript:
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);
嘗試一下»
使用strokeText():
實例
使用"Arial" 字體在畫布上繪製一個高30px 的文字(空心):
JavaScript:
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():
實例
創建一個線性漸變。 使用漸變填充矩形:
JavaScript:
var ctx=c.getContext("2d");
// Create gradient
var grd=ctx.createLinearGradient(0,0,200,0);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// Fill with gradient
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
嘗試一下»
使用createRadialGradient():
實例
創建一個徑向/圓漸變。 使用漸變填充矩形:
JavaScript:
var ctx=c.getContext("2d");
// Create gradient
var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// Fill with gradient
ctx.fillStyle=grd;
ctx.fillRect(10,10,150,80);
嘗試一下»
Canvas - 圖像
把一幅圖像放置到畫布上, 使用以下方法:
- drawImage(image,x,y)
使用圖像:
實例
把一幅圖像放置到畫布上:
JavaScript:
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
ctx.drawImage(img,10,10);
嘗試一下»
HTML Canvas 參考手冊
標籤的完整屬性可以參考Canvas參考手冊.
The HTML <canvas> Tag
Tag | 描述 |
---|---|
<canvas> | HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。 |