我們知道canvas是畫(huà)布,今天我們就來(lái)畫(huà)布上面畫(huà)線和面屑那。
1.Html中的畫(huà)布
<!doctype html>
<html lang="en">
<head>
<title>Canvas 2D畫(huà)線和面</title>
</head>
<body>
<canvas id="cv" width="150" height="150"></canvas>
</body>
</html>
canvas是HTML5中的元素拱镐,當(dāng)沒(méi)有設(shè)置寬度和高度的時(shí)候,canvas會(huì)初始化寬度為300像素和高度為150像素持际。該元素可以使用CSS來(lái)定義大形掷拧;如果在繪制時(shí)圖像會(huì)伸縮以適應(yīng)它的框架尺寸蜘欲,那么CSS的尺寸與初始畫(huà)布的比例不一致益眉,會(huì)出現(xiàn)扭曲。
2.渲染上下文
canvas起初是空白的姥份。為了展示郭脂,首先腳本需要找到渲染上下文,然后在它的上面繪制澈歉。<canvas> 元素有一個(gè)做 getContext() 的方法展鸡,這個(gè)方法是用來(lái)獲得渲染上下文和它的繪畫(huà)功能。getContext()只有一個(gè)參數(shù)埃难,上下文的格式莹弊。對(duì)于2D圖像而言你可以使用 CanvasRenderingContext2D。
var canvas = document.getElementById('cv');
var ctx = canvas.getContext('2d');
兼容性檢查
在不支持 <canvas> 標(biāo)簽的瀏覽器中如何展示替換內(nèi)容凯砍。通過(guò)簡(jiǎn)單的測(cè)試getContext()方法的存在箱硕,腳本可以檢查編程支持性。上面的代碼片段現(xiàn)在變成了這個(gè)樣子:
var canvas = document.getElementById('tutorial');
if (canvas.getContext){
var ctx = canvas.getContext('2d');
// drawing code here
} else {
// canvas-unsupported code here
}
3.畫(huà)一個(gè)方塊
獲得了context悟衩,就好像獲得了畫(huà)筆剧罩,這時(shí)我們?cè)诋?huà)布上畫(huà)下一個(gè)方塊:
ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
ctx.fillRect (30, 30, 55, 50);
CanvasRenderingContext2D.fillRect() 是Canvas 2D API 繪制填充矩形的方法。矩形的起點(diǎn)在 (x, y) 位置座泳,矩形的尺寸是 width 和 height 惠昔,fillStyle 屬性決定矩形的樣式。
4.畫(huà)一條線
同理挑势,畫(huà)一條線也是調(diào)用ctx的方法:
ctx.beginPath();
ctx.moveTo(0,0);
ctx.lineTo(100, 100);
ctx.stroke();
CanvasRenderingContext2D.stroke() 是 Canvas 2D API 使用非零環(huán)繞規(guī)則镇防,根據(jù)當(dāng)前的畫(huà)線樣式,繪制當(dāng)前或已經(jīng)存在的路徑的方法潮饱。
上面的代碼中我們先繪制一條路徑来氧,然后通過(guò)stroke方法用當(dāng)前的樣式把這個(gè)路徑渲染出來(lái)。