HTML5 <canvas> 元素用於圖形的繪製,經過腳本 (一般是JavaScript)來完成.canvas
<canvas> 標籤只是圖形容器,您必須使用腳原本繪製圖形。瀏覽器
你能夠經過多種方法使用 canvas 繪製路徑,盒、圓、字符以及添加圖像。字體
一個畫布在網頁中是一個矩形框,經過 <canvas> 元素來繪製.spa
注意: 默認狀況下 <canvas> 元素沒有邊框和內容。3d
<canvas>簡單實例以下:code
<canvas id="myCanvas" width="200" height="100"></canvas>
注意: 標籤一般須要指定一個id屬性 (腳本中常常引用), width 和 height 屬性定義的畫布的大小.對象
提示:你能夠在HTML頁面中使用多個 <canvas> 元素.blog
使用 style 屬性來添加邊框:ip
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"> </canvas>
canvas 元素自己是沒有繪圖能力的。全部的繪製工做必須在 JavaScript 內部完成:get
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> 您的瀏覽器不支持 HTML5 canvas 標籤。 </canvas> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.fillStyle="#FF0000"; ctx.fillRect(0,0,150,75); </script>
運行結果
首先,找到 <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 的左上角座標爲 (0,0)
上面的 fillRect 方法擁有參數 (0,0,150,75)。
意思是:在畫布上繪製 150x75 的矩形,從左上角開始 (0,0)。
座標實例
以下圖所示,畫布的 X 和 Y 座標用於在畫布上對繪畫進行定位。鼠標移動的矩形框上,顯示定位座標。
在Canvas上畫線,咱們將使用如下兩種方法:
繪製線條咱們必須使用到 "ink" 的方法,就像stroke().
定義開始座標(0,0), 和結束座標 (200,100)。而後使用 stroke() 方法來繪製線條:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> 您的瀏覽器不支持 HTML5 canvas 標籤。</canvas> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.moveTo(0,0); ctx.lineTo(200,100); ctx.stroke(); </script>
在canvas中繪製圓形, 咱們將使用如下方法:
arc(x,y,r,start,stop)
實際上咱們在繪製圓形時使用了 "ink" 的方法, 好比 stroke() 或者 fill().
使用 arc() 方法 繪製一個圓:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> 您的瀏覽器不支持 HTML5 canvas 標籤。</canvas> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.beginPath(); ctx.arc(95,50,40,0,2*Math.PI); ctx.stroke(); </script>
使用 canvas 繪製文本,重要的屬性和方法以下:
使用 fillText():
使用 "Arial" 字體在畫布上繪製一個高 30px 的文字(實心):
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> 您的瀏覽器不支持 HTML5 canvas 標籤。</canvas> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font="30px Arial"; ctx.fillText("Hello World",10,50); </script>
使用 strokeText():
使用 "Arial" 字體在畫布上繪製一個高 30px 的文字(空心):
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> 您的瀏覽器不支持 HTML5 canvas 標籤。</canvas> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); ctx.font="30px Arial"; ctx.strokeText("Hello World",10,50); </script>
漸變能夠填充在矩形, 圓形, 線條, 文本等等, 各類形狀能夠本身定義不一樣的顏色。
如下有兩種不一樣的方式來設置Canvas漸變:
當咱們使用漸變對象,必須使用兩種或兩種以上的中止顏色。
addColorStop()方法指定顏色中止,參數使用座標來描述,能夠是0至1.
使用漸變,設置fillStyle或strokeStyle的值爲 漸變,而後繪製形狀,如矩形,文本,或一條線。
使用 createLinearGradient():
建立一個線性漸變。使用漸變填充矩形:
使用 createRadialGradient():
建立一個徑向/圓漸變。使用漸變填充矩形:
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;"> 您的瀏覽器不支持 HTML5 canvas 標籤。</canvas> <script> var c=document.getElementById("myCanvas"); 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); </script>
把一幅圖像放置到畫布上, 使用如下方法:
使用圖像
把一幅圖像放置到畫布上:
<p>Image to use:</p> <img id="scream" src="img_the_scream.jpg" alt="The Scream" width="220" height="277"><p>Canvas:</p> <canvas id="myCanvas" width="250" height="300" style="border:1px solid #d3d3d3;"> 您的瀏覽器不支持 HTML5 canvas 標籤。</canvas> <script> var c=document.getElementById("myCanvas"); var ctx=c.getContext("2d"); var img=document.getElementById("scream"); img.onload = function() { ctx.drawImage(img,10,10); } </script>
在畫圓的時候,使用下面的方法
arc(x,y,r,start,stop)
畫布的左上角座標爲0,0
x:圓心在x軸上的座標
y:圓心在y軸上的座標
r:半徑長度
start:起始角度,以弧度表示,圓心平行的右端爲0度
stop:結束角度,以弧度表示
注意:Math.PI表示180°,畫圓的方向是順時針
製做徑向漸變時 context.createRadialGradient(x , y , r , x1 , y1 , r1) 括號內參數含義以下:
x: 漸變的開始圓的 x 座標
y: 漸變的開始圓的 y 座標
r: 開始圓的半徑
x1: 漸變的結束圓的 x 座標
y1: 漸變的結束圓的 y 座標
r1: 結束圓的半徑
(x, y, r) (x1,y1,r1)分別能夠表明一個圓形的特徵, 我的感受一般狀況下(x,y) 和 (x1,y1)簡單地相同便可(即同心圓), 這樣作出來的徑向漸變已經十分美觀,符合大衆審美觀。