绘制渐变折线
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="500" height="500"></canvas>
<script>
let canvas = document.querySelector("#canvas");
let context = canvas.getContext("2d");
// 绘制折线
context.moveTo(10, 10);
context.lineTo(110, 110);
context.lineTo(210, 10);
context.lineTo(310, 110);
context.lineTo(410, 10);
context.lineWidth = 10;
// 添加渐变
// 设置渐变起点和终点
let gradient = context.createLinearGradient(10, 10, 410, 10);
gradient.addColorStop(0, "red");
gradient.addColorStop(1, "blue");
context.strokeStyle = gradient;
context.stroke();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="500" height="500"></canvas>
<script>
let canvas = document.querySelector("#canvas");
let context = canvas.getContext("2d");
// 绘制弧线
context.arc(200, 200, 50, (0 * Math.PI) / 180, (180 * Math.PI) / 180, true);
// 参数: x,y,R,起始弧度,终点弧度,正向或负向
context.stroke();
</script>
</body>
</html>
绘制弧线
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="600" height="600"></canvas>
<script>
let canvas = document.querySelector("#canvas");
let context = canvas.getContext("2d");
// 头
context.arc(
300,
300,
300,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
// 在两个不相关的图形之间,需要告诉context,重新生成一个新的路径
// 开始路径
// 鼻子
context.beginPath();
context.arc(
300,
300,
20,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
context.closePath();
// 闭合路径
// 左眼
context.beginPath();
context.arc(
150,
150,
20,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
context.closePath();
// 右眼
context.beginPath();
context.arc(
450,
150,
20,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
context.closePath();
// 嘴巴
context.beginPath();
context.arc(
300,
300,
250,
(0 * Math.PI) / 180,
(180 * Math.PI) / 180,
false
);
context.stroke();
context.closePath();
</script>
</body>
</html>
绘制笑脸
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="500" height="500"></canvas>
<script>
let canvas = document.querySelector("#canvas");
let context = canvas.getContext("2d");
// 绘制椭圆弧
context.ellipse(200, 200, 200, 100, 0, -(90 * Math.PI) / 180, (90 * Math.PI) / 180);
// 参数: x,y,x半径,y半径,顺时针旋转度数,起始弧度,终点弧度
context.stroke();
</script>
</body>
</html>
绘制椭圆弧
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="600" height="600"></canvas>
<script>
let canvas = document.querySelector("#canvas");
let context = canvas.getContext("2d");
// 头
context.arc(
300,
300,
300,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
// 在两个不相关的图形之间,需要告诉context,重新生成一个新的路径
// 开始路径
// 鼻子
context.beginPath();
context.ellipse(
300,
300,
50,
100,
0,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180
);
context.stroke();
context.closePath();
// 闭合路径
// 左眼
context.beginPath();
context.arc(
150,
150,
20,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
context.closePath();
// 右眼
context.beginPath();
context.arc(
450,
150,
20,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
context.closePath();
// 嘴巴
context.beginPath();
context.arc(
300,
300,
250,
(0 * Math.PI) / 180,
(180 * Math.PI) / 180,
false
);
context.stroke();
context.closePath();
</script>
</body>
</html>
绘制椭圆鼻子笑脸
context.fill()填充颜色 fill会自动连接起始点和终点
设置填充样式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<canvas id="canvas" width="600" height="600"></canvas>
<script>
let canvas = document.querySelector("#canvas");
let context = canvas.getContext("2d");
// 头
context.arc(
300,
300,
300,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
// 从(0,0)向(600,600)渐变
let gradient = context.createLinearGradient(0, 0, 600, 600);
gradient.addColorStop(0, "red");
gradient.addColorStop(1, "blue");
context.fillStyle = gradient;
context.fill();
context.stroke();
// 在两个不相关的图形之间,需要告诉context,重新生成一个新的路径
// 开始路径
// 鼻子
context.beginPath();
context.ellipse(
300,
300,
50,
100,
0,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180
);
context.stroke();
context.closePath();
// 闭合路径
// 左眼
context.beginPath();
context.arc(
150,
150,
20,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
context.closePath();
// 右眼
context.beginPath();
context.arc(
450,
150,
20,
(0 * Math.PI) / 180,
(360 * Math.PI) / 180,
true
);
context.stroke();
context.closePath();
// 嘴巴
context.beginPath();
context.arc(
300,
300,
250,
(0 * Math.PI) / 180,
(180 * Math.PI) / 180,
false
);
context.stroke();
context.closePath();
</script>
</body>
</html>
笑脸填充线性渐变色
填充径向渐变色