HTML5 畫布

什麼是Canvas?

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

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

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

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


瀏覽器支援

7.jpg


Internet Explorer 9+, Firefox, Opera, Chrome, 和Safari 支援<canvas> 元素.

注意: Internet Explorer 8 及更早IE 版本的瀏覽器不支援<canvas> 元素.


#建立一個畫布(Canvas)

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

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

<canvas>簡單實例如下:

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

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

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

使用 style 屬性來新增邊框:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php.cn</title>
</head>
<body>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #28c9b6;">
    您的浏览器不支持 HTML5 canvas 标签。
</canvas>
</body>
</html>

執行程式試試看


使用JavaScript 來繪製圖片

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

#實例

#
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php.cn</title>
</head>
<body>
<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>
</body>
</html>

程式執行結果:

1.jpg

實例解析:

首先,找到<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 座標用於在畫布上對繪畫進行定位。在滑鼠移動的矩形框上,顯示定位座標。

1.jpg


Canvas - 路徑

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

moveTo(x ,y) 定義線條開始座標

lineTo(x,y) 定義線條結束座標

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

#實例

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php.cn</title>
</head>
<body>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #d31029;">
    您的浏览器不支持 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>
</body>
</html>

程式運行結果:

8.jpg


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

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

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

實例

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php.cn</title>
</head>
<body>
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #1d17ff;">
    您的浏览器不支持 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>
</body>
</html>

程式運行結果:

4.jpg


Canvas - 文字

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

font - 定義字體

fillText(text,x,y) - 在canvas 上繪製實心的文字

strokeText(text,x,y) - 在canvas 上繪製空心的文字

實例

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php.cn</title>
</head>
<body>
<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,30);
    ctx.strokeText("你好吗!",10,80);
</script>
</body>
</html>

#程式運行結果:

8.jpg


Canvas - 漸層

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

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

createLinearGradient(x,y,x1,y1) - 建立線條漸層

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

當我們使用漸層對象,必須使用兩種或兩種以上的停止顏色。

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

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


實例

#使用 createLinearGradient(),建立線性漸進式。使用漸層填滿矩形:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>php.cn</title>
</head>
<body>
<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");
    // 创建渐变
    var grd=ctx.createLinearGradient(0,0,200,10);
    grd.addColorStop(0,"red");
    grd.addColorStop(1,"white");
    // 充满度
    ctx.fillStyle=grd;
    ctx.fillRect(10,10,150,80);
</script>
</body>
</html>

程式執行結果:

3.jpg


實例

5.jpg


使用createRadialGradient(),建立一個徑向/圓漸層。使用漸層填滿矩形:

<!DOCTYPE html>
<html>
<head> 
    <meta charset="UTF-8">
    <title>php中文网(php.cn)</title> 
</head>
<body>
<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>
</body>
</html>

程式執行結果:########################Canvas - 映像################################################################ ##

你可以把一張圖片放到畫布上,這樣你就可以對圖片做一些操作加上一些你想要的素材,例如文字什麼的。

把一幅圖像放在畫布上使用以下方法:

drawImage(image,x,y)

使用圖像

7.jpg

#實例

把一幅圖像放置到畫布上:

<!DOCTYPE html>
<html>
<head> 
    <meta charset="UTF-8">
    <title>php中文网(php.cn)</title> 
</head>
<body>
<p>使用图像:</p>
<img id="scream" src="http://img.blog.163.com/photo/g8yDNFsGMeq-pzHY2_n3aQ==/356628795492853826.jpg" alt="The Scream" width="220" height="277"><p>画布:</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>
</body>
</html>

程式運行結果:

1.jpg



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

The HTML <canvas> 標籤


#   

### 標籤############     ########################     < ;canvas>######HTML5 的canvas 元素使用JavaScript 在網頁上繪製圖片。 #####################
繼續學習
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php.cn</title> </head> <body> <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,30); ctx.strokeText("你好吗!",10,80); </script> </body> </html>
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!