使用canvas画一个羽毛球

101 阅读3分钟

使用 Canvas 画一个羽毛球

在这篇文章中,我们将使用 HTML5 的 Canvas API 来绘制一个羽毛球。羽毛球的绘制主要涉及到圆形、线条以及渐变色的使用。下面是详细的实现步骤。

1. 创建 HTML 结构

首先,我们需要在 HTML 中添加一个 Canvas 元素。可以通过设置宽度和高度来定义画布的大小。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Canvas 羽毛球</title>
    <style>
        canvas {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <canvas id="myCanvas" width="300" height="300"></canvas>
    <script src="script.js"></script>
</body>
</html>

2. 获取 Canvas 上下文

在 JavaScript 文件 script.js 中,我们需要获取 Canvas 的上下文,才能进行绘制。

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

3. 绘制羽毛球的主体

羽毛球的主体是一个白色的圆形,首先我们绘制一个圆形。

// 绘制羽毛球主体
function drawShuttlecock() {
    ctx.beginPath();
    ctx.arc(150, 150, 40, 0, Math.PI * 2, false); // 画一个圆
    ctx.fillStyle = 'white'; // 设置填充颜色为白色
    ctx.fill();
    ctx.closePath();
}

4. 绘制羽毛球的羽毛部分

羽毛球的羽毛部分可以用曲线来表示。我们将使用贝塞尔曲线来绘制羽毛。

function drawFeathers() {
    ctx.fillStyle = 'lightgray'; // 设置羽毛颜色为浅灰色
    ctx.beginPath();
    ctx.moveTo(150, 150); // 从圆心开始

    // 绘制羽毛的曲线
    ctx.bezierCurveTo(130, 90, 170, 90, 150, 150);
    ctx.bezierCurveTo(160, 120, 140, 120, 150, 150);

    ctx.bezierCurveTo(130, 110, 170, 110, 150, 150);
    ctx.bezierCurveTo(140, 130, 160, 130, 150, 150);

    ctx.fill();
    ctx.closePath();
}

5. 绘制羽毛球的底部

羽毛球底部的部分通常是一个小圆形,我们也可以用圆形来表示。

function drawBase() {
    ctx.beginPath();
    ctx.arc(150, 190, 10, 0, Math.PI * 2, false); // 底部的小圆
    ctx.fillStyle = 'black'; // 设置底部颜色为黑色
    ctx.fill();
    ctx.closePath();
}

6. 组合绘制函数

现在我们将以上三个绘制函数组合在一起,形成一个完整的绘制函数。

function drawShuttlecockComplete() {
    drawShuttlecock(); // 绘制主体
    drawFeathers();    // 绘制羽毛
    drawBase();        // 绘制底部
}

7. 执行绘制

最后,我们调用这个绘制函数来完成整个羽毛球的绘制。

drawShuttlecockComplete();

8. 完整代码

将所有代码整合在一起,完整的代码如下:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Canvas 羽毛球</title>
    <style>
        canvas {
            border: 1px solid #000;
        }
    </style>
</head>
<body>
    <canvas id="myCanvas" width="300" height="300"></canvas>
    <script>
        const canvas = document.getElementById('myCanvas');
        const ctx = canvas.getContext('2d');

        function drawShuttlecock() {
            ctx.beginPath();
            ctx.arc(150, 150, 40, 0, Math.PI * 2, false);
            ctx.fillStyle = 'white';
            ctx.fill();
            ctx.closePath();
        }

        function drawFeathers() {
            ctx.fillStyle = 'lightgray';
            ctx.beginPath();
            ctx.moveTo(150, 150);
            ctx.bezierCurveTo(130, 90, 170, 90, 150, 150);
            ctx.bezierCurveTo(160, 120, 140, 120, 150, 150);
            ctx.bezierCurveTo(130, 110, 170, 110, 150, 150);
            ctx.bezierCurveTo(140, 130, 160, 130, 150, 150);
            ctx.fill();
            ctx.closePath();
        }

        function drawBase() {
            ctx.beginPath();
            ctx.arc(150, 190, 10, 0, Math.PI * 2, false);
            ctx.fillStyle = 'black';
            ctx.fill();
            ctx.closePath();
        }

        function drawShuttlecockComplete() {
            drawShuttlecock();
            drawFeathers();
            drawBase();
        }

        drawShuttlecockComplete();
    </script>
</body>
</html>

总结

通过上述步骤,我们使用 HTML5 的 Canvas API 成功绘制了一个羽毛球。您可以根据需要调整颜色、大小和形状,创造出不同风格的羽毛球。Canvas 提供了强大的绘制能力,帮助开发者实现丰富的图形效果。