console
var canvas=document.querySelector('#canvas');
var buttons=document.querySelectorAll('button');
ctx = canvas.getContext('2d');
beginDraw = function(){
if(buttons[0].style.backgroundColor === 'red'){
buttons[0].style.backgroundColor = '';
canvas.removeEventListener('mousedown',star);
}else{
buttons[0].style.backgroundColor = 'red';
canvas.addEventListener('mousedown',star);
}
}
bianhong=function(){
if(buttons[1].style.backgroundColor==='red'){
buttons[1].style.backgroundColor = '';
ctx.strokeStyle='#000000'
}else{
buttons[1].style.backgroundColor = 'red';
ctx.strokeStyle='red'
}
}
canvas.onmouseup = function(e){
canvas.removeEventListener('mouseleave',leave);
canvas.removeEventListener('mousemove',draw);
}
function star(e){
ctx.beginPath()
ctx.lineWidth = '8.0'
ctx.lineJoin= 'round'
ctx.lineCap= 'round'
const {
offsetX:starX,
offsetY:starY,
} =e
ctx.moveTo(starX,starY);
canvas.addEventListener('mousemove',draw);
canvas.addEventListener('mouseleave',leave);
}
function leave(){
canvas.removeEventListener('mouseleave',leave);
canvas.removeEventListener('mousemove',draw);
}
function draw(e){
const {
offsetX:curX,
offsetY:curY,
} =e
ctx.lineTo(curX,curY)
ctx.stroke()
}
submitCanvas = function(){
var img =document.querySelector('img');
img.src =canvas.toDataURL('image/png');
img=null
}
download = function() {
var can = document.getElementById("canvas");
var cxt = can.getContext("2d");
var url = can.toDataURL("image/png");
var arr = url.split(","),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
var file = new File([u8arr], "filename", {
type: mime
});
var aDom = document.createElement("a");
aDom.download = file.name;
let href = URL.createObjectURL(file);
aDom.href = href;
document.body.appendChild(aDom);
aDom.click();
document.body.removeChild(aDom);
URL.revokeObjectURL(href);
}
<div class="draw-boar" style="border:2px solid #ccc">
<canvas id="canvas" width="300" height="300"></canvas>
<hr>
<button onclick="beginDraw()">画笔</button>
<button onclick="bianhong()">红色</button>
<button onclick="{ctx.clearRect(0,0,300,300)}">清空</button>
<button onclick="submitCanvas()">提交</button>
<hr>
<img src="" alt="">
</div>
.draw-boar{
width: 300px;
margin: 30px auto;
}