使用canvas画一个羽毛球
在前端开发中,使用HTML5的<canvas>元素可以绘制各种图形,包括羽毛球。下面是一个简单的示例,展示如何使用Canvas API来绘制一个羽毛球:
- HTML结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>绘制羽毛球</title>
</head>
<body>
<canvas id="badmintonCanvas" width="400" height="400"></canvas>
<script src="script.js"></script>
</body>
</html>
- JavaScript代码 (
script.js文件):
window.onload = function() {
const canvas = document.getElementById('badmintonCanvas');
const ctx = canvas.getContext('2d');
// 绘制羽毛球的球体
ctx.beginPath();
ctx.arc(200, 200, 50, 0, Math.PI * 2); // 在(200, 200)位置绘制半径为50的圆
ctx.fillStyle = 'white'; // 设置填充颜色为白色
ctx.fill(); // 填充圆形
ctx.strokeStyle = 'black'; // 设置描边颜色为黑色
ctx.stroke(); // 描边圆形
// 绘制羽毛球的羽毛部分(简化为16条线段)
const featherLength = 70; // 羽毛长度
const featherWidth = 10; // 羽毛宽度(实际上羽毛球的羽毛是片状的,这里简化为线段)
const featherAngleStep = Math.PI / 8; // 羽毛之间的角度步长
ctx.strokeStyle = 'black'; // 设置羽毛的颜色为黑色
for (let i = 0; i < 16; i++) {
const angle = i * featherAngleStep; // 计算当前羽毛的角度
const xStart = 200 + 50 * Math.cos(angle); // 计算羽毛起点的x坐标
const yStart = 200 + 50 * Math.sin(angle); // 计算羽毛起点的y坐标
const xEnd = xStart + featherLength * Math.cos(angle + Math.PI / 2); // 计算羽毛终点的x坐标(垂直于当前角度)
const yEnd = yStart + featherLength * Math.sin(angle + Math.PI / 2); // 计算羽毛终点的y坐标(垂直于当前角度)
ctx.beginPath();
ctx.moveTo(xStart, yStart); // 移动到羽毛起点
ctx.lineTo(xEnd, yEnd); // 绘制到羽毛终点
ctx.lineWidth = featherWidth; // 设置线条宽度
ctx.stroke(); // 描边线条,形成羽毛
}
};
这段代码首先定义了一个HTML结构,其中包含一个<canvas>元素。然后,在JavaScript中,我们获取了这个<canvas>元素的上下文,并使用Canvas API来绘制羽毛球。首先,我们绘制了一个白色的圆形来表示羽毛球的球体部分,并使用黑色描边。然后,我们使用一个循环来绘制16条线段,表示羽毛球的羽毛部分。每条线段都从一个在球体边缘的点开始,并沿着与球体边缘垂直的方向延伸出去。
浙公网安备 33010602011771号