2
respostas

Desenhe obras de arte - Solução

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

<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, Math.PI);
        pincel.fill();
    }

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

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

        if(!(0 <= x && x < 3*tamanhoQuadrados && 0 <= y && y < tamanhoQuadrados ) && desenha){         
            desenhaCirculo(x, y, 5, 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 && xAzul <= x && x < 3*tamanhoQuadrados ) corAtual='blue';
    }

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

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

    desenhaPaletaDeCores();

    tela.addEventListener('click', trocaCor);

    tela.addEventListener('mousemove',lidaComMovimentoDoMouse);

    tela.addEventListener('mousedown', habilitaDesenhar);

    tela.addEventListener('mouseup', desabilitaDesenhar);



</script>
2 respostas

Oi José

Muito bom! Parabéns pelo empenho nos estudos!

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

Obrigado Guilherme! Sempre é bom otimizar códigos.