var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var cw = canvas.width = 300,
cx = cw / 2;
var ch = canvas.height = 180,
cy = ch / 2;
var color = "blue";
var drawing = false;
var points= [];
class Point{
constructor(color,x,y){
this.color = color;
this.x = x;
this.y = y
}
draw(){
ctx.fillStyle = this.color;
ctx.beginPath();
ctx.arc(this.x,this.y,5,0,2*Math.PI);
ctx.fill()
}
}
canvas.addEventListener('mousedown', function(evt) {
drawing = true;
}, false);
canvas.addEventListener('mouseup', function(evt) {
drawing = false;
}, false);
canvas.addEventListener("mouseout", function(evt) {
drawing = false;
}, false);
canvas.addEventListener("mousemove", function(evt) {
if (drawing) {
ctx.clearRect(0, 0, cw, ch);
m = oMousePos(canvas, evt);
var point = new Point(color,m.x,m.y);
//point.draw();
points.push(point);
points.forEach((p) =>{
p.draw()
})
}
}, false);
function oMousePos(canvas, evt) {
var ClientRect = canvas.getBoundingClientRect();
return {
x: Math.round(evt.clientX - ClientRect.left),
y: Math.round(evt.clientY - ClientRect.top)
}
}
colors.addEventListener("click", (e)=>{
if(e.target.tagName == "SPAN"){color = e.target.id;
}else if(e.target.id == "deleteGreen"){
ctx.clearRect(0,0,cw,ch);
points.forEach( p => {
if(p.color !== "green"){p.draw()}
})
}
})
body {
background-color: #eee;
}
#app {
display: block;
margin: auto;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
width: 300px;
height: 300px;
}
canvas {
background: #fff;
border-radius: 3px;
box-shadow: 0px 0px 15px 3px #ccc;
cursor: pointer;
}
#colors {
display: flex;
margin-top: 1em;
justify-content: space-between;
}
#colors span, #deleteGreen {
display: block;
width: 50px;
height: 50px;
border: 1px solid #d9d9d9;
}
#green {
background-color: green;
}
#gold {
background-color: gold;
}
#tomato {
background-color: tomato;
}
#blue {
background-color: blue;
}
#deleteGreen {
text-align: center;
line-height: 50px;
}
<div id="app">
<canvas id="canvas">:( </canvas>
<div id="colors" >
<span id="green"></span>
<span id="gold"></span>
<span id="tomato"></span>
<span id="blue"></span>
<div id="deleteGreen">D</div>
</div>
</div>