Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Fiz com que o circulo tbm diminuisse.

usando a tecla shift vc aumenta infinitamente o circulo. usando a tecla ctrl vc diminui o circulo até o minimo de 10 (no caso eu deixei a condição >1 pra poder diminuir). usei alert para mostrar como mudar de tamanho e cor e qual cor está selecionada.

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

<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle = 'lightgrey';
    pincel.fillRect(0, 0, 600, 400);

    var cor = ['blue','red','green','yellow'];
    var corAtual = 0;

    var raio = 0

    function desenhaCirculo(evento){

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;

        if(evento.shiftKey){
            raio = raio+10;
        }
        if(evento.ctrlKey){
            if(raio>1){
            raio = raio-10;
            }
        }

        pincel.fillStyle = cor[corAtual];
        pincel.beginPath();
        pincel.arc(x, y, raio+10, 0, 2*3.14);
        pincel.fill();
        console.log(x + ',' + y);
    }

    tela.onclick = desenhaCirculo;

    function mudaCor(){

        corAtual++;

        if(corAtual >= cor.length){
            corAtual = 0;
        }

        alert('Cor ' + cor[corAtual] + ' selecionada');
        return false; // para não exibir o menu padrão do canvas
    }


    alert('Cor ' + cor[corAtual] + ' selecionada, aperte o botão direito do mouse para mudar de cor. Se estiver usando o celular mantenha o dedo na tela por alguns segundos');
    alert('A tecla "shift" aumenta o tamanho do circulo e "ctrl" diminui');
    tela.oncontextmenu = mudaCor;
</script>
3 respostas
solução!

Oi Gabriel

Excelente! Parabéns pelo empenho nos estudos!

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

Também fiz e o meu ficou assim



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

<script>
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

    pincel.fillStyle = 'grey';
    pincel.fillRect(0, 0, 600, 400);

      var raio = 10; 

    function desenhaCirculo(evento) {

        var x = evento.pageX - tela.offsetLeft;
        var y = evento.pageY - tela.offsetTop;
        var pi = 2*3.14
                console.log(x + ',' + y);

        if (evento.shiftKey) {

        raio = raio + 10;
        }

        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, pi);
        pincel.fill();

         if (evento.ctrlKey) {

        raio = raio - 10;
        }
        pincel.fillStyle = 'blue';
        pincel.beginPath();
        pincel.arc(x, y, raio, 0, pi);
        pincel.fill();

    }

    tela.onclick = desenhaCirculo;


</script> 

Ótimo, para ficar melhor adiciona "and raio > 10" porque o raio diminui para menos que 1 pixel sem essa condição.

if(evento.ctrlkey and raio > 10){
    raio = raio -10
}

a condição aqui é que "se o ctrl for precionado E o raio for maior que 10" o raio pode ser subtraido, se ele já for 10 este if não vai ser executado, evitando que o raio fique em 0 ou menos que isso, -10,-20...

se n funcionar o and troca ele por && (to aprendendo python então pode ser que and n funcione)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software