【实战】Canvas画板 发表于 2019-03-10 | 分类于 JavaScript MDN Canvashttps://developer.mozilla.org/zh-CN/docs/Web/API/Canvas_API/Tutorial 代码实现 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596<!DOCTYPE html><html lang="zh-Hans"><head> <meta charset="UTF-8"> <title>Canvas</title> <style> #canvas{ background-color: green; display: block; } body{ margin:0; } #eraser{ position: fixed; bottom:10px; left:0; } </style></head><body> <canvas id="canvas" width=400 height=400></canvas> <button id="eraser">橡皮擦</button> <script> var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); initWidthAndHeight() window.onresize = function() { initWidthAndHeight() } var using = false // 是否在使用画板 var useEraser = false // 是否使用橡皮擦 var firstPoint; var lastPoint; canvas.onmousedown = function(event) { var x = event.clientX var y = event.clientY using = true if (useEraser) { ctx.clearRect(x - 5, y - 5, 10, 10); } else { firstPoint = { x: x, y: y } drawArc(x, y) } } canvas.onmousemove = function(event) { var x = event.clientX var y = event.clientY if(using){ if(useEraser){ ctx.clearRect(x - 5, y - 5, 10, 10); }else{ lastPoint = { x: x, y: y } drawLine(firstPoint.x, firstPoint.y, lastPoint.x, lastPoint.y) firstPoint = lastPoint drawArc(x, y) } } } canvas.onmouseup = function() { using = false } eraser.onclick = function() { useEraser = !useEraser } function drawArc(x, y) { ctx.beginPath(); ctx.arc(x, y, 5, 0, Math.PI * 2) ctx.fill() } function drawLine(x1, y1, x2, y2) { ctx.beginPath(); ctx.moveTo(x1, y1); ctx.lineTo(x2, y2); ctx.stroke(); } function initWidthAndHeight() { var width = document.documentElement.clientWidth var height = document.documentElement.clientHeight canvas.width = width canvas.height = height } </script></body></html>