Canvas怎么绘制出五角星?

在HTML的<canvas>元素中绘制五角星,你可以使用JavaScript的Math.sin()Math.cos()函数来计算出五角星每个顶点的位置,并使用moveTo()lineTo()方法来连接这些顶点。

以下是一个使用HTML文件展示如何在<canvas>上绘制五角星的示例:

示例效果与源代码:

运行效果

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Canvas 绘制五角星</title>
</head>
<body>

<canvas id="myCanvas" width="400" height="400" style="border:1px solid #d3d3d3;">
您的浏览器不支持Canvas元素。
</canvas>

<script>
// 获取canvas元素
var canvas = document.getElementById('myCanvas');
// 获取2D绘图上下文
var ctx = canvas.getContext('2d');

// 绘制五角星
function drawStar(cx, cy, spikes, outerRadius, innerRadius) {
var rot = Math.PI / 2 * 3;
var x = cx;
var y = cy;
var step = Math.PI / spikes;

ctx.beginPath();
ctx.moveTo(cx, cy - outerRadius)

for (i = 0; i < spikes; i++) {
x = cx + Math.cos(rot) * outerRadius;
y = cy + Math.sin(rot) * outerRadius;
ctx.lineTo(x, y)
rot += step

x = cx + Math.cos(rot) * innerRadius;
y = cy + Math.sin(rot) * innerRadius;
ctx.lineTo(x, y)
rot += step
}

ctx.lineTo(cx, cy - outerRadius);
ctx.closePath();
ctx.lineWidth = 5;
ctx.strokeStyle = 'black';
ctx.stroke();
ctx.fillStyle = 'yellow';
ctx.fill();
}

// 设置五角星参数
var centerX = canvas.width / 2; // 圆心X坐标
var centerY = canvas.height / 2; // 圆心Y坐标
var spikes = 5; // 五角星有5个顶点
var outerRadius = 100; // 外半径
var innerRadius = 50; // 内半径(五角星顶点之间的距离)

// 调用函数绘制五角星
drawStar(centerX, centerY, spikes, outerRadius, innerRadius);
</script>

</body>
</html>

在这个示例中,我们定义了一个drawStar函数,该函数接受五个参数:圆心的X和Y坐标、五角星的顶点数(对于五角星,这个值应该为5)、外半径(从圆心到五角星最外侧顶点的距离)和内半径(五角星顶点之间的距离)。

drawStar函数中,我们首先设置旋转的起始角度(这里选择从五角星的顶部开始绘制),然后使用一个循环来绘制五角星的每个顶点。在每个循环中,我们使用Math.cos()Math.sin()函数计算出当前顶点在外圆和内圆上的位置,并使用lineTo()方法将顶点连接起来。最后,我们回到起始点闭合路径,并使用stroke()fill()方法绘制五角星的轮廓和填充。

在示例的底部,我们设置了五角星的参数,并调用了drawStar函数来绘制五角星。你可以根据需要调整这些参数来绘制不同大小和样式的五角星。