效果图
功能实现:
按钮点击实现相应的功能
源代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<canvas id="myCanvas" width="600" height="300" style="border: 1px solid red; background-color: black ;"></canvas>
<br />
<button style="width: 80PX; background-color: mistyrose;" onclick="xd = '0'">线条</button>
<button style="width: 80PX; background-color: cornflowerblue;" onclick="xd = '1'">矩形</button>
<br />
<button style="width: 80PX; background-color: yellow;" onclick="linecolor = 'yellow'">YELLOW</button>
<button style="width: 80PX; background-color: red;" onclick="linecolor = 'red'">RED</button>
<button style="width: 80PX; background-color: green;" onclick="myFunction()" id="demo">clear</button>
</body>
<script type="text/javascript">
var myCanvas = document.getElementById("myCanvas");
var ctx = myCanvas.getContext("2d");
ctx.strokeStyle = "blue";
ctx.fillStyle = "palevioletred";
//1.先做一个背景 矩形
ctx.fillStyle = "black";
ctx.fillRect(0, 0, 600, 300);
//变量
var oldX = 0;
var oldY = 0;
var onOff = false;
var linecolor = "white";
var cccc = 0;
var xd = 0;
//2响应3个鼠标事件,鼠标按下,鼠标移动鼠标弹起
//增加监听事件
function myFunction() {
document.getElementById("demo");
cccc = "1";
if(cccc == 1) {
ctx.clearRect(0, 0, 600, 300);
}
}
myCanvas.addEventListener("mousedown", down);
myCanvas.addEventListener("mousemove", move);
myCanvas.addEventListener("mouseup", up);
function down(event) {
console.log(event);
onOff = true;
oldX = event.pageX - 10;
oldY = event.pageY - 10;
}
function move(event) {
console.log(event);
if(onOff == true) {
var newX = event.pageX - 10;
var newY = event.pageY - 10;
if(xd == 1) {
ctx.beginPath();
ctx.clearRect(oldX-4, oldY-4, newX-oldX+10,newY-oldY+10);
ctx.strokeRect(oldX,oldY,newX-oldX,newY-oldY);
ctx.lineCap = "round";
ctx.strokeStyle = linecolor;
ctx.lineWidth = 4;
ctx.stroke();
} else {
ctx.beginPath();
ctx.moveTo(oldX, oldY);
ctx.lineTo(newX, newY);
ctx.strokeStyle = linecolor;
ctx.lineWidth = 4;
ctx.lineCap = "round";
ctx.stroke();
oldX = newX;
oldY = newY;
}
}
}
function up() {
onOff = false;
}
</script>
</html>
注意!!!!
如图,当鼠标往回折的速度过快时,清理画笔跟不上会出现重影,如果有大佬有好的解决方法希望能给笔者解惑!谢