HTML5 Canvas
HTML5 Canvas
<canvas>元素是HTML5中的新元素,通過(guò)使用該元素,你可以在網(wǎng)頁(yè)中繪制所需的圖形。
標(biāo)簽定義圖形,比如圖表和其他圖像,您必須使用腳本來(lái)繪制圖形。
在畫(huà)布上(Canvas)畫(huà)一個(gè)紅色矩形,漸變矩形,彩色矩形,和一些彩色的文字。
什么是 Canvas?
HTML5 元素用于圖形的繪制,通過(guò)腳本 (通常是JavaScript)來(lái)完成.
標(biāo)簽只是圖形容器,您必須使用腳本來(lái)繪制圖形。
你可以通過(guò)多種方法使用Canva繪制路徑,盒、圓、字符以及添加圖像。
瀏覽器支持
Internet Explorer Firefox Opera Google Chrome Safari
Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 支持 元素.
注意: Internet Explorer 8 及更早 IE 版本的瀏覽器不支持 <canvas> 元素.
創(chuàng)建一個(gè)畫(huà)布(Canvas)
一個(gè)畫(huà)布在網(wǎng)頁(yè)中是一個(gè)矩形框,通過(guò) <canvas> 元素來(lái)繪制.
注意: 默認(rèn)情況下 <canvas> 元素沒(méi)有邊框和內(nèi)容。
<canvas>簡(jiǎn)單實(shí)例如下:
<canvas id="myCanvas" width="200" height="100"></canvas>
注意: 標(biāo)簽通常需要指定一個(gè)id屬性 (腳本中經(jīng)常引用), width 和 height 屬性定義的畫(huà)布的大小。
提示: 你可以在HTML頁(yè)面中使用多個(gè) <canvas> 元素.
使用 style 屬性來(lái)添加邊框:
實(shí)例
<canvas id="myCanvas" width="200" height="100"
style="border:1px solid #000000;">
</canvas>
使用 JavaScript 來(lái)繪制圖像
canvas 元素本身是沒(méi)有繪圖能力的。所有的繪制工作必須在 JavaScript 內(nèi)部完成:
實(shí)例
<script>
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
</script>
實(shí)例解析:
首先,找到 <canvas> 元素:
var c=document.getElementById("myCanvas");
然后,創(chuàng)建 context 對(duì)象:
var ctx=c.getContext("2d");
getContext("2d") 對(duì)象是內(nèi)建的 HTML5 對(duì)象,擁有多種繪制路徑、矩形、圓形、字符以及添加圖像的方法。
下面的兩行代碼繪制一個(gè)紅色的矩形:
ctx.fillStyle="#FF0000";
ctx.fillRect(0,0,150,75);
設(shè)置fillStyle屬性可以是CSS顏色,漸變,或圖案。fillStyle默認(rèn)設(shè)置是#000000(黑色)。
fillRect(x,y,width,height) 方法定義了矩形當(dāng)前的填充方式。
Canvas 坐標(biāo)
canvas 是一個(gè)二維網(wǎng)格。
canvas 的左上角坐標(biāo)為 (0,0)
上面的 fillRect 方法擁有參數(shù) (0,0,150,75)。
意思是:在畫(huà)布上繪制 150x75 的矩形,從左上角開(kāi)始 (0,0)。
坐標(biāo)實(shí)例
如下圖所示,畫(huà)布的 X 和 Y 坐標(biāo)用于在畫(huà)布上對(duì)繪畫(huà)進(jìn)行定位。
Canvas - 路徑
在Canvas上畫(huà)線,我們將使用以下兩種方法:
moveTo(x,y) 定義線條開(kāi)始坐標(biāo)
lineTo(x,y) 定義線條結(jié)束坐標(biāo)
繪制線條我們必須使用到 "ink" 的方法,就像stroke().
實(shí)例
定義開(kāi)始坐標(biāo)(0,0), 和結(jié)束坐標(biāo) (200,100). 然后使用 stroke() 方法來(lái)繪制線條:
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)
實(shí)際上我們?cè)诶L制圓形時(shí)使用了 "ink" 的方法, 比如 stroke() 或者 fill().
實(shí)例
使用 arc() 方法 繪制一個(gè)圓:
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 上繪制實(shí)心的文本
strokeText(text,x,y) - 在 canvas 上繪制空心的文本
使用 fillText():
實(shí)例
使用 "Arial" 字體在畫(huà)布上繪制一個(gè)高 30px 的文字(實(shí)心):
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.fillText("Hello World",10,50);
使用 strokeText():
實(shí)例
使用 "Arial" 字體在畫(huà)布上繪制一個(gè)高 30px 的文字(空心):
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial";
ctx.strokeText("Hello World",10,50);
Canvas - 漸變
漸變可以填充在矩形, 圓形, 線條, 文本等等, 各種形狀可以自己定義不同的顏色。
以下有兩種不同的方式來(lái)設(shè)置Canvas漸變:
createLinearGradient(x,y,x1,y1) - 創(chuàng)建線條漸變
createRadialGradient(x,y,r,x1,y1,r1) - 創(chuàng)建一個(gè)徑向/圓漸變
當(dāng)我們使用漸變對(duì)象,必須使用兩種或兩種以上的停止顏色。
addColorStop()方法指定顏色停止,參數(shù)使用坐標(biāo)來(lái)描述,可以是0至1.
使用漸變,設(shè)置fillStyle或strokeStyle的值為漸變,然后繪制形狀,如矩形,文本,或一條線。
使用 createLinearGradient():
實(shí)例
創(chuàng)建一個(gè)線性漸變。使用漸變填充矩形:
JavaScript:
var c=document.getElementById("myCanvas");
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():
實(shí)例
創(chuàng)建一個(gè)徑向/圓漸變。使用漸變填充矩形:
JavaScript:
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);
提示:當(dāng)使用<canvas>元素創(chuàng)建徑向漸變的時(shí)候 context.createRadialGradient(x , y , r , x1 , y1 , r1) 括號(hào)內(nèi)的參數(shù)有如下的含義:
x:表示漸變的開(kāi)始圓的 x 坐標(biāo)
y:表示漸變的開(kāi)始圓的 y 坐標(biāo)
r:表示開(kāi)始圓的半徑
x1:表示漸變的結(jié)束圓的 x 坐標(biāo)
y1:表示漸變的結(jié)束圓的 y 坐標(biāo)
r1:表示結(jié)束圓的半徑
Canvas - 圖像
把一幅圖像放置到畫(huà)布上, 使用以下方法:
drawImage(image,x,y)
使用圖像:
The Scream
實(shí)例
把一幅圖像放置到畫(huà)布上:
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
var img=document.getElementById("scream");
ctx.drawImage(img,10,10);
HTML Canvas 參考手冊(cè)
標(biāo)簽的完整屬性可以參考Canvas 參考手冊(cè).
The HTML Tag
Tag 描述
<canvas> HTML5 的 canvas 元素使用 JavaScript 在網(wǎng)頁(yè)上繪制圖像。
作者:大學(xué)生新聞網(wǎng) 來(lái)源:大學(xué)生新聞網(wǎng)
發(fā)布時(shí)間:2025-03-30 閱讀:
- HTML5 內(nèi)聯(lián) SVG
- SVG表示可縮放矢量圖形,是基于可擴(kuò)展標(biāo)記語(yǔ)言(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集),用于描述二維矢量圖形的一種圖形格式,它在2003年1月14日成
- 03-30 關(guān)注:0
- HTML5 Canvas
- 03-30 關(guān)注:0
- HTML5 新元素
- 自1999年以后HTML 4.01 已經(jīng)改變了很多,今天,在HTML 4.01中的幾個(gè)已經(jīng)被廢棄,這些元素在HTML5中已經(jīng)被刪除或重新定義。
- 03-30 關(guān)注:0
- CSS 總結(jié)
- 你已經(jīng)學(xué)習(xí)了CSS,下一步學(xué)習(xí)什么呢?
- 03-30 關(guān)注:0
- CSS 屬性選擇器
- 顧名思義,CSS 屬性選擇器就是指可以根據(jù)元素的屬性以及屬性值來(lái)選擇元素。
- 03-30 關(guān)注:0
- CSS 媒體類型
- 媒體類型允許你指定文件將如何在不同媒體呈現(xiàn)。該文件可以以不同的方式顯示在屏幕上,在紙張上,或聽(tīng)覺(jué)瀏覽器等等。
- 03-30 關(guān)注:1
- CSS 圖像拼合技術(shù)
- 有許多圖像的網(wǎng)頁(yè)可能需要很長(zhǎng)的時(shí)間來(lái)加載和生成多個(gè)服務(wù)器的請(qǐng)求。
- 03-30 關(guān)注:1
- CSS 圖像透明/不透明
- 注意:CSS Opacity屬性是W3C的CSS3建議的一部分。
- 03-29 關(guān)注:6