HTML5 Canvas 教程:六、填充樣式
六、填充樣式 Fill Style
6.1純色填充 Color Fill
要用純色填充HTML5畫布形狀,可以將fillStyle屬性設定為顏色字串(如藍色)、十六進位制值(如0000FF)或RGB值(如rgb(0,0255),然後可以使用fill()方法來填充形狀。除非另有宣告,否則HTML5畫布形狀的預設填充樣式為黑色。
注意:在為形狀設定填充和筆劃時,請確保在stroke()之前使用fill()。否則,填充將重疊。
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="200"></canvas>
<script>
var canvas = document.getElementById('myCanvas'
var context = canvas.getContext('2d');
// begin custom shape
context.beginPath();
context.moveTo(170, 80);
context.bezierCurveTo(130, 100, 130, 150, 230, 150);
context.bezierCurveTo(250, 180, 320, 180, 340, 150);
context.bezierCurveTo(420, 150, 420, 120, 390, 100);
context.bezierCurveTo(430, 40, 370, 30, 340, 50);
context.bezierCurveTo(320, 5, 250, 20, 250, 50);
context.bezierCurveTo(200, 5, 150, 20, 170, 80);
// complete custom shape
context.closePath();
context.lineWidth = 5;
context.fillStyle = '#8ED6FF';
context.fill();
context.strokeStyle = 'blue';
context.stroke();
</script>
</body>
</html>
以上程式碼演示了在畫布上繪製一個自定義閉合形狀,並用純色填充。
6.2線形漸變填充 Linear Gradient
為了在HTML5畫布上進行線性漸變填充,可以使用createLinearGradient()方法。線性漸變通過宣告漸變方向來定義。一旦建立了漸變,就可以使用addColorStop屬性插入顏色。
線性漸變的方向從createLinearGradient()定義的假象線的起點移動到終點。在本教程中,使用了兩種顏色停頓,一種用於在漸變開始的淺藍色,一種用於漸變結束的深藍色。顏色停止沿虛線放置在0和1之間,其中0位於起始點,1位於結束點。
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="200"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
context.rect(0, 0, canvas.width, canvas.height);
// add linear gradient
var grd = context.createLinearGradient(0, 0, canvas.width, canvas.height);
// light blue
grd.addColorStop(0, '#8ED6FF');
// dark blue
grd.addColorStop(1, '#004CB3');
context.fillStyle = grd;
context.fill();
</script>
</body>
</html>
以上程式碼演示了在畫布上繪製一個矩形,並使用線形漸變進行填充。
6.3徑向漸變填充 Radial Gradient
為了在HTML5畫布上進行徑向漸變填充,我們可以使用createRadialGradient()方法。徑向漸變定義為兩個假想圓:起始圓和結束圓,漸變從起始圓開始,向結束圓移動。
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="200"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
context.rect(0, 0, canvas.width, canvas.height);
// create radial gradient
var grd = context.createRadialGradient(238, 50, 10, 238, 50, 300);
// light blue
grd.addColorStop(0, '#8ED6FF');
// dark blue
grd.addColorStop(1, '#004CB3');
context.fillStyle = grd;
context.fill();
</script>
</body>
</html>
以上程式碼演示了在畫布上繪製一個矩形,並用徑向漸變填充。
6.4模式填充 Pattern Fill
為了在HTML5畫布上進行模式填充,我們可以使用createPattern()方法來返回一個模式物件,將fillStyle屬性設定為模式物件,然後使用fill()方法填充形狀。createPattern()方法需要一個影象物件和一個重複選項,它可以是repeat、repeat-x、repeat-y或no-repeat。除非另有宣告,否則重複選項預設為repeat。
<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="578" height="200"></canvas>
<script>
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');
var imageObj = new Image();
imageObj.onload = function() {
var pattern = context.createPattern(imageObj, 'repeat');
context.rect(0, 0, canvas.width, canvas.height);
context.fillStyle = pattern;
context.fill();
};
imageObj.src = 'wood-pattern.png';
</script>
</body>
</html>
以上程式碼演示了在畫布上建立一個矩形,並用背景圖片重複填充。