1
resposta

Vamos colorir V. 2.0

Fiz uma versão que podemos "pagar" o que foi feito.

<html><br><br><br>
<body background="https://media.istockphoto.com/photos/primary-and-secondary-colours-picture-id532562266">
<center>
<canvas width="1000" height="800"></canvas>
    <br>
    <h1>Vamos colorir</h1>
</center>
<script>

    function desenhaQuadrado(x, y, tamanho, cor) {
        pincel.fillStyle = cor;
        pincel.fillRect(x, y, tamanho, tamanho)
        pincel.fill();
    }

    function desenhaCirculo(x, y, raio, cor) {
        pincel.fillStyle = cor;
        pincel.beginPath();
        pincel.arc(x, y, raio, 0,2* Math.PI);
        pincel.fill();
    }

    function desenhaPaletaDeCores() {
        desenhaQuadrado(xVermelho, yQuadrados, tamanhoQuadrados, 'red');
        desenhaQuadrado(xVerde, yQuadrados, tamanhoQuadrados, 'green');
        desenhaQuadrado(xBranco, yQuadrados, tamanhoQuadrados, 'white');
        desenhaQuadrado(xAzul, yQuadrados, tamanhoQuadrados, 'blue');
    }

    function lidaComMovimentoDoMouse(e) {
        let x = e.pageX - tela.offsetLeft;
        let y = e.pageY - tela.offsetTop;

        if(!(0 <= x && x < 4*tamanhoQuadrados && 0 <= y && y < tamanhoQuadrados ) && desenha){
            desenhaCirculo(x, y, 10, corAtual);
        }

    }

    function habilitaDesenhar() {
        desenha = true;
    }

    function desabilitaDesenhar() {
        desenha = false;
    }


    function trocaCor(e){
        let x = e.pageX - tela.offsetLeft;
        let y = e.pageY - tela.offsetTop;

        let  yC = (0 <= y && y < tamanhoQuadrados);

        if( yC && xVermelho <= x && x < tamanhoQuadrados ) corAtual='red';
        if( yC && xVerde <= x && x < 2*tamanhoQuadrados ) corAtual='green';
        if( yC && xBranco <= x && x < 3*tamanhoQuadrados ) corAtual='lightgray';
        if( yC && xAzul <= x && x < 4*tamanhoQuadrados ) corAtual='blue';
    }

    let tela = document.querySelector('canvas');
    let pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 1000, 800);

    let desenha = false;
    let corAtual = 'blue';
    let xVermelho = 0;
    let xVerde  = 50;
    let xBranco = 100;
    let xAzul = 150;
    let yQuadrados = 0;
    let tamanhoQuadrados = 50;

    desenhaPaletaDeCores();

    tela.addEventListener('click', trocaCor);

    tela.addEventListener('mousemove',lidaComMovimentoDoMouse);

    tela.addEventListener('mousedown', habilitaDesenhar);

    tela.addEventListener('mouseup', desabilitaDesenhar);



</script>
</body>
</html>
1 resposta

Olá, Italo! Tudo bem por aí?

Sua solução está correta, mandou bem.

Caso tenha ficado com alguma dúvida não deixe de compartilhar com a gente.

Bons estudos e até mais!