二、线条Lines
2.1直线 Line
要在画布上绘制线条,可以通过调用:beginPath()、moveTo()、lineTo()和stroke()方法来实现。
首先,我们可以使用beginPath()方法来声明我们即将绘制一个新的路径。接下来,我们可以使用moveTo()方法定位上下文对象的绘图起点(即绘图光标),然后使用lineTo()方法从起始位置绘制一条直线到一个新的位置。最后,为了使线条可见,调用stroke()方法将线条绘制出来。除非另有声明,否则笔划颜色默认为黑色。
<!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.beginPath();
context.moveTo(100, 150);
context.lineTo(450, 50);
context.stroke();
</script>
</body>
</html>
以上代码演示了在画布上绘制一段黑色的直线。
2.2线条宽度 Line Width
如果要改变绘制线条的宽度,可以使用画布上下文对象的lineWidth属性,但是必须先设置lineWidth属性,然后调用stroke()方法绘制线条。
<!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.beginPath();
context.moveTo(100, 150);
context.lineTo(450, 50);
context.lineWidth = 15;
context.stroke();
</script>
</body>
</html>
以上代码在页面的canvas画布上绘制一段宽度为15的直线。
2.3线条颜色 Line Color
要设置HTML5画布行的颜色,可以使用画布上下文对象的strokeStyle属性,它可以设置为颜色字符串,如红色、绿色或蓝色、十六进制值,如#FF0000或#555,或者RGB值,如rgb(255、0、0)。
<!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.beginPath();
context.moveTo(100, 150);
context.lineTo(450, 50);
context.lineWidth = 10;
// set line color
context.strokeStyle = '#ff0000';
context.stroke();
</script>
</body>
</html>
以上代码演示了在画布上绘制一段宽度为15的红色直线。
2.4端点样式 Line Cap
通过设置lineCap属性,定义线条的端点样式。HTML5画布线条有三种端点样式,包括:butt、round和square。除非另有声明,否则HTML5画布默认使用butt样式绘制线条端点。必须先设置lineCap属性,然后调用stroke()方法绘制线条。
<!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');
// butt line cap (top line)
context.beginPath();
context.moveTo(200, canvas.height / 2 - 50);
context.lineTo(canvas.width - 200, canvas.height / 2 - 50);
context.lineWidth = 20;
context.strokeStyle = '#0000ff';
context.lineCap = 'butt';
context.stroke();
// round line cap (middle line)
context.beginPath();
context.moveTo(200, canvas.height / 2);
context.lineTo(canvas.width - 200, canvas.height / 2);
context.lineWidth = 20;
context.strokeStyle = '#0000ff';
context.lineCap = 'round';
context.stroke();
// square line cap (bottom line)
context.beginPath();
context.moveTo(200, canvas.height / 2 + 50);
context.lineTo(canvas.width - 200, canvas.height / 2 + 50);
context.lineWidth = 20;
context.strokeStyle = '#0000ff';
context.lineCap = 'square';
context.stroke();
</script>
</body>
</html>
以上代码分别演示了三种线条端点样式。