1
resposta

Eu fiz utilizando um IF a mais na função "mouseMove".

Não sei se é o mais adequado, mas pra mim foi menos complicado.

<meta charset="utf-8">

<canvas width="600" height="400"></canvas>

<script>

    function drawSquare(x,y,size,color) {

        paint.fillStyle=color;
        paint.fillRect(x,y,size,size);
        paint.fill();
    }

    function drawCircle(x,y,radius,color) {

        paint.fillStyle=color;
        paint.beginPath();
        paint.arc(x,y,radius,0,2*Math.PI);
        paint.fill(); 
    }

    function drawColorPalette() {

        drawSquare(xRed,ySquare,squareSize,"red");
        drawSquare(xGreen,ySquare,squareSize,"green");
        drawSquare(xBlue,ySquare,squareSize,"blue");
    }

    function mouseMove(event) {

        var x=event.pageX-canvas.offsetLeft;
        var y=event.pageY-canvas.offsetTop;

        if(x>=0 && x<3*squareSize+5 && y>=0 && y<squareSize+5) {

            return
        } else if (draw) {

            drawCircle(x,y,5,currentColor);
        }
    }

    function enableDraw() {

        draw=true;
    }

    function disableDraw() {

        draw=false;
    }

    function changeColor(event) {

        var x=event.pageX-canvas.offsetLeft;
        var y=event.pageY-canvas.offsetTop;

        if (x<50 && y<50) {

            currentColor="red";
        } else if (x>50 && x<100 && y<50) {

            currentColor="green";
        } else if (x>100 && x<150 && y<50) {

            currentColor="blue";
        }

    }

    var canvas=document.querySelector("canvas");
    var paint=canvas.getContext("2d");
    paint.fillStyle="lightgrey";
    paint.fillRect(0,0,600,400);

    var draw=false;
    var currentColor="blue";
    var xRed=0;
    var xGreen=50;
    var xBlue=100;
    var ySquare=0;
    var squareSize=50;

    drawColorPalette();

    canvas.onclick=changeColor;
    canvas.onmousemove=mouseMove;
    canvas.onmousedown=enableDraw;
    canvas.onmouseup=disableDraw;

</script>

1 resposta

Oi Guilherme

Muito bom! Parabéns pelo empenho nos estudos!

Continue praticando e qualquer dúvida pode contar com a gente.