# Lines
# Line
Canvas 中绘制线条,我们需要使用 beginPath()
、moveTo()
、lineTo()
、stroke()
4个方法。首先使用 beginPath()
方法表明我们将要进行绘制工作;然后使用 moveTo()
在 Canvas 的画布上设置一个起点坐标;接着使用 lineTo()
绘制一条从起点坐标到终点坐标的直线;最后还需要使用 stroke()
使得这条直线在屏幕上可见。注意:默认情况下线条是黑色的。
<!DOCTYPE HTML>
<html>
<head>Line</head>
<body>
<canvas id="container" width="578" height="200"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(100, 150);
ctx.lineTo(450, 50);
ctx.stroke();
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Line Width
使用 lineWidth
属性定义线条的宽度。注意:
- 必须在调用
stroke()
之前设置才会生效。 - 赋值为:0、 负数、 Infinity 和 NaN 会被忽略。
- 单位是 px
<!DOCTYPE HTML>
<html>
<head>lineWidth</head>
<body>
<canvas id="container" width="578" height="200"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(100, 150);
ctx.lineTo(450, 50);
// 设置线条宽度
ctx.lineWidth = 15;
ctx.stroke();
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Line Color
使用 strokeStyle
属性定义线条的颜色。该属性支持像“red”、“green”、“blue”这样的颜色值,也支持像“#FF0000”、“#FFF”的十六进制,还支持像“rgb(255, 0, 0)”这样的 RBG 值。注意:必须在调用 stroke()
之前设置才会生效。
<!DOCTYPE HTML>
<html>
<head>strokeStyle</head>
<body>
<canvas id="container" width="578" height="200"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(100, 150);
ctx.lineTo(450, 50);
ctx.lineWidth = 15;
// 设置线条颜色
ctx.strokeStyle = "red";
ctx.stroke();
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Line Cap
使用 lineCap
属性定义线条末端的形状,目前支持3种形状:butt
、round
、square
,默认为 butt
。注意:必须在调用 stroke()
之前设置才会生效。
<!DOCTYPE HTML>
<html>
<head>lineCap</head>
<body>
<canvas id="container" width="578" height="200"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
// lineCap 为 butt
ctx.beginPath();
ctx.moveTo(100, canvas.height / 2 - 50);
ctx.lineTo(canvas.width - 200, canvas.height / 2 - 50);
ctx.lineWidth = 15;
ctx.strokeStyle = "#0000ff";
ctx.lineCap = "butt";
ctx.stroke();
// lineCap 为 round
ctx.beginPath();
ctx.moveTo(100, canvas.height / 2);
ctx.lineTo(canvas.width - 200, canvas.height / 2);
ctx.lineWidth = 15;
ctx.strokeStyle = "#0000ff";
ctx.lineCap = "round";
ctx.stroke();
// lineCap 为 square
ctx.beginPath();
ctx.moveTo(100, canvas.height / 2 + 50);
ctx.lineTo(canvas.width - 200, canvas.height / 2 + 50);
ctx.lineWidth = 15;
ctx.strokeStyle = "#0000ff";
ctx.lineCap = "square";
ctx.stroke();
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Line Join
使用 lineJoin
属性定义两条线条相连部分的形状。目前支持3种形状:bevel
、round
、miter
,默认是 miter
。 注意:必须在调用 stroke()
之前设置才会生效。
<!DOCTYPE HTML>
<html>
<head>lineJoin</head>
<body>
<canvas id="container" width="578" height="500"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
// lineJoin 为 miter
ctx.beginPath();
ctx.moveTo(100, 20);
ctx.lineTo(200, 100);
ctx.lineTo(300, 20);
ctx.lineWidth = 15;
ctx.lineJoin = "miter";
ctx.stroke();
// lineJoin 为 round
ctx.beginPath();
ctx.moveTo(100, 70);
ctx.lineTo(200, 150);
ctx.lineTo(300, 70);
ctx.lineWidth = 15;
ctx.lineJoin = "round";
ctx.stroke();
// lineJoin 为 bevel
ctx.beginPath();
ctx.moveTo(100, 120);
ctx.lineTo(200, 200);
ctx.lineTo(300, 120);
ctx.lineWidth = 15;
ctx.lineJoin = "bevel";
ctx.stroke();
</script>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Curves →