在页面中使用HTML5绘图标签canvas,实现一个绘图板交互功能含画布的清空
时间: 2024-05-16 20:14:10 浏览: 127
基于HTML5 Canvas的画图板设计与实现
好的,以下是一个简单的HTML文件,实现了一个绘图板交互功能,包括画线、画圆、清空画布等功能:
```html
<!DOCTYPE html>
<html>
<head>
<title>Canvas绘图板</title>
<style>
canvas {
border: 1px solid #000;
}
</style>
</head>
<body>
<canvas id="canvas" width="500" height="500"></canvas>
<br>
<button onclick="drawLine()">画线</button>
<button onclick="drawCircle()">画圆</button>
<button onclick="clearCanvas()">清空</button>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var isDrawing = false;
var lastX = 0;
var lastY = 0;
function drawLine() {
canvas.addEventListener("mousedown", function(e) {
isDrawing = true;
lastX = e.clientX - canvas.offsetLeft;
lastY = e.clientY - canvas.offsetTop;
});
canvas.addEventListener("mousemove", function(e) {
if (isDrawing) {
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(e.clientX - canvas.offsetLeft, e.clientY - canvas.offsetTop);
ctx.stroke();
lastX = e.clientX - canvas.offsetLeft;
lastY = e.clientY - canvas.offsetTop;
}
});
canvas.addEventListener("mouseup", function(e) {
isDrawing = false;
});
}
function drawCircle() {
canvas.addEventListener("mousedown", function(e) {
ctx.beginPath();
ctx.arc(e.clientX - canvas.offsetLeft, e.clientY - canvas.offsetTop, 10, 0, 2 * Math.PI);
ctx.stroke();
});
}
function clearCanvas() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
</script>
</body>
</html>
```
在这个HTML文件中,我们使用了Canvas标签创建了一个500x500的画布,并定义了三个按钮:画线、画圆、清空,分别对应了绘制直线、绘制圆形和清空画布三个功能。
在JavaScript代码中,我们使用了Canvas的getContext()方法获取了画布的2D上下文,然后定义了isDrawing、lastX和lastY三个变量,分别表示当前是否正在绘制、上一个绘制点的横坐标和纵坐标。
对于画线功能,我们在鼠标按下、移动和松开三个事件中分别定义了对应的操作,使用了Canvas的beginPath()、moveTo()、lineTo()和stroke()方法,完成了绘制直线的功能。
对于画圆功能,我们只需要在鼠标按下事件中绘制一个半径为10的圆形即可。
对于清空功能,我们使用了Canvas的clearRect()方法,将画布上的所有内容清除。
希望这个例子能够帮助你理解如何使用Canvas实现一个简单的绘图板交互功能。
阅读全文