# Shapes
# Rectangle
Canvas 中绘制矩形,我们需要使用 rect()
方法,其中传入参数:矩形左上角的坐标,矩形的宽度和矩形的高度。也使用 fillRect()
来绘制填充的矩形,或者使用 strokeRect()
来绘制边框矩形。
<!DOCTYPE HTML>
<html>
<head>
<title>Rectangle</title>
</head>
<body>
<canvas id="container" width="578" height="200"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.rect(10, 10, 200, 100);
ctx.fillStyle = "red";
ctx.fill();
ctx.beginPath();
ctx.rect(10, 120, 200, 100);
ctx.strokeStyle = "red";
ctx.stroke();
ctx.beginPath();
ctx.fillStyle = "red";
ctx.fillRect(10, 230, 200, 100);
ctx.beginPath();
ctx.strokeStyle = "red";
ctx.strokeRect(10, 340, 200, 100);
</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
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
# Circle
Canvas 中绘制圆,我们需要使用 arc()
方法,其中传入的参数:中心点坐标、圆弧半径、起始点(弧度)、终点(弧度)以及绘制方向(顺时针或逆时针)。只要将起始点设置为0,终点设置为2π就能绘制出一个圆。
<!DOCTYPE HTML>
<html>
<head>
<title>Circle</title>
</head>
<body>
<canvas id="container" width="578" height="200"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
const x = canvas.width / 2;
const y = canvas.height / 2;
const r = 70;
ctx.beginPath();
ctx.arc(x, y, r, 0, 2 * Math.PI, false);
ctx.fillStyle = "green";
ctx.fill();
ctx.lineWith = 5;
ctx.strokeStyle = "#003300";
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Semicircle
Canvas 中绘制半圆,我们需要使用 arc()
方法,其中传入的参数:中心点坐标、圆弧半径、起始点(弧度)、终点(弧度)以及绘制方向(顺时针或逆时针)。只要将终点设置为起始点的基础上 + π 就可以了。
<!DOCTYPE HTML>
<html>
<head>
<title>Semicircle</title>
</head>
<body>
<canvas id="container" width="578" height="200"></canvas>
<script>
const canvas = document.getElementById('container');
const ctx = canvas.getContext('2d');
const x = canvas.width / 2;
const y = canvas.height / 2;
const r = 70;
ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI, false);
// 闭合路径
ctx.closePath();
ctx.fillStyle = "green";
ctx.fill();
ctx.lineWith = 5;
ctx.strokeStyle = "#003300";
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
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
# Custom Shape
如今我们可以使用各种 Canvas
中的方法,例如:lineTo()
,arcTo()
,quadraticCurveTo()
或者bezierCurveTo()
等,来绘制各式各样的图形,注意有时候需要使用 closePath()
方法来形成一个封闭的图形。
<!DOCTYPE HTML>
<html>
<head>
<title>Custom Shape</title>
</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(170, 80);
ctx.bezierCurveTo(130, 100, 130, 150, 230, 150);
ctx.bezierCurveTo(250, 180, 320, 180, 340, 150);
ctx.bezierCurveTo(420, 150, 420, 120, 390, 100);
ctx.bezierCurveTo(430, 40, 370, 30, 340, 50);
ctx.bezierCurveTo(320, 5, 250, 120, 250, 50);
ctx.bezierCurveTo(200, 5, 150, 20, 170, 80);
ctx.closePath();
ctx.lineWidth = 5;
ctx.strokeStyle = "blue";
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
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
← Curves Fill Style →