使用 Canvas 制作一个画板
在这篇文章中,我们将介绍如何使用 HTML5 的 <canvas> 元素创建一个简单的画板应用。这个画板可以让用户自由绘画,支持不同颜色和画笔大小的选择。
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;
}
.controls {
margin-bottom: 10px;
}
</style>
</head>
<body>
<div class="controls">
<label for="color">选择颜色:</label>
<input type="color" id="color" value="#000000">
<label for="size">画笔大小:</label>
<input type="number" id="size" value="5" min="1" max="100">
<button id="clear">清空画布</button>
</div>
<canvas id="canvas" width="800" height="600"></canvas>
<script src="script.js"></script>
</body>
</html>
2. 编写 JavaScript 逻辑
接下来,我们需要编写 JavaScript 代码,以实现画板的功能。
// script.js
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let painting = false; // 是否在绘画
let color = '#000000'; // 默认颜色
let size = 5; // 默认画笔大小
// 开始绘画
function startPosition(e) {
painting = true;
draw(e); // 确保在开始时绘制
}
// 停止绘画
function endPosition() {
painting = false;
ctx.beginPath(); // 重置路径
}
// 绘制函数
function draw(e) {
if (!painting) return;
ctx.lineWidth = size; // 设置画笔大小
ctx.lineCap = 'round'; // 画笔形状
ctx.strokeStyle = color; // 设置颜色
// 获取鼠标位置
const rect = canvas.getBoundingClientRect();
ctx.lineTo(e.clientX - rect.left, e.clientY - rect.top);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(e.clientX - rect.left, e.clientY - rect.top);
}
// 事件监听
canvas.addEventListener('mousedown', startPosition);
canvas.addEventListener('mouseup', endPosition);
canvas.addEventListener('mousemove', draw);
// 颜色选择
document.getElementById('color').addEventListener('input', (e) => {
color = e.target.value;
});
// 画笔大小选择
document.getElementById('size').addEventListener('input', (e) => {
size = e.target.value;
});
// 清空画布
document.getElementById('clear').addEventListener('click', () => {
ctx.clearRect(0, 0, canvas.width, canvas.height); // 清空画布
});
3. 代码解析
HTML 部分
- Canvas 元素:用于绘图的区域,设置了宽度和高度。
- 控制面板:提供颜色选取器、画笔大小输入框和清空按钮。
JavaScript 部分
- 获取 Canvas 上下文:使用
getContext('2d')方法获取 2D 渲染上下文。 - 绘图状态管理:通过
painting变量来跟踪用户是否在绘画。 - 事件处理:
mousedown:开始绘画。mouseup:停止绘画。mousemove:绘制线条。
- 颜色和大小选择:通过用户输入动态更新画笔的颜色和大小。
- 清空画布:使用
clearRect方法清空整个画布。
4. 小结
通过以上步骤,我们创建了一个简单的画板应用。用户可以选择颜色和画笔大小,自由绘制。这个应用展示了 HTML5 <canvas> 的强大功能以及与 JavaScript 的交互。
您可以根据需求扩展这个画板,比如添加撤销功能、保存图像等。希望这篇文章能够帮助您理解如何使用 Canvas 创建绘图应用。