使用HTML5绘制一个正反面的硬币

134 阅读2分钟

"```markdown

使用HTML5绘制一个正反面的硬币

在这篇文章中,我们将使用HTML5的Canvas元素来绘制一个正反面的硬币。我们将使用JavaScript来控制绘制的过程。

创建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>硬币绘制</title>
    <style>
        canvas {
            border: 1px solid #000;
            display: block;
            margin: 20px auto;
        }
    </style>
</head>
<body>
    <canvas id=\"coinCanvas\" width=\"200\" height=\"200\"></canvas>
    <script src=\"script.js\"></script>
</body>
</html>

绘制硬币的JavaScript代码

接下来,我们在script.js文件中实现绘制硬币的逻辑。

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

// 绘制硬币的正面
function drawFront() {
    // 圆形外边框
    ctx.beginPath();
    ctx.arc(100, 100, 80, 0, Math.PI * 2, false);
    ctx.fillStyle = '#FFD700'; // 金色
    ctx.fill();
    ctx.strokeStyle = '#B8860B'; // 深金色
    ctx.lineWidth = 5;
    ctx.stroke();

    // 绘制硬币图案
    ctx.fillStyle = '#FFF';
    ctx.font = \"20px Arial\";
    ctx.textAlign = \"center\";
    ctx.fillText(\"正面\", 100, 100);
}

// 绘制硬币的反面
function drawBack() {
    ctx.clearRect(0, 0, canvas.width, canvas.height); // 清空画布

    // 圆形外边框
    ctx.beginPath();
    ctx.arc(100, 100, 80, 0, Math.PI * 2, false);
    ctx.fillStyle = '#C0C0C0'; // 银色
    ctx.fill();
    ctx.strokeStyle = '#A9A9A9'; // 深银色
    ctx.lineWidth = 5;
    ctx.stroke();

    // 绘制硬币图案
    ctx.fillStyle = '#000';
    ctx.font = \"20px Arial\";
    ctx.textAlign = \"center\";
    ctx.fillText(\"反面\", 100, 100);
}

// 初始化绘制正面
drawFront();

// 切换硬币的正反面
canvas.addEventListener('click', () => {
    if (ctx.fillStyle === '#FFD700') {
        drawBack();
    } else {
        drawFront();
    }
});

代码解释

  1. Canvas元素:我们创建了一个200x200像素的Canvas元素,作为绘制硬币的画布。
  2. 绘制正面:在drawFront函数中,使用arc方法绘制一个金色的圆形,表示硬币的正面,并在中心绘制“正面”字样。
  3. 绘制反面:在drawBack函数中,首先清空画布,然后绘制一个银色的圆形,表示硬币的反面,并在中心绘制“反面”字样。
  4. 事件监听:通过监听Canvas的点击事件,切换正反面。

总结

通过以上步骤,我们使用HTML5的Canvas元素成功绘制了一个可以切换正反面的硬币。可以根据需要进一步美化硬币的图案和样式。