Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

pintando onde não deve e só trocando a primeira cor

Não consegui pegar o pensamento pra trocar de cor, fiz mais simples, mas é claro, não funcionou. Na minha cabeça eu só preciso saber se ele clicou entre 0 e 50 no x e no y pra pegar a cor, onde tá o erro dessa lógica? Fora isso to tentando achar o que falta pra não desenhar na paleta. hehe Obrigado

<meta charset="UTF-8">

<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, 2 * 3.14);
        pincel.fill();

    }

    function desenhaPaletaDeCores() {

        desenhaQuadrado(xVermelho, yQuadrados, tamanhoQuadrados, 'red');
        desenhaQuadrado(xVerde, yQuadrados, tamanhoQuadrados, 'green');
        desenhaQuadrado(xAzul, yQuadrados, tamanhoQuadrados, 'blue');

    }

    function lidaComMovimentoDoMouse(evento) {

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

        if(desenha && podeDesenharNaArea) {

            desenhaCirculo(x, y, 5, corAtual);
        }
    }

    function habilitaDesenhar() {
        desenha = true;
    }

    function desabilitaDesenhar() {

        desenha = false;
    }
    function trocaCor(evento){
      var x = evento.pageX - tela.offsetLeft;
      var y = evento.pageY - tela.offsetTop;
      if (x>0 && y>0 && x<50 && y<50){
        corAtual = "red";
      } if (x>0 && y>50 && x<0 && y<100){
        corAtual = "green";
      } if (x>0 && y>100 && x<0 && y<150){
        corAtual = "blue";
      }
    }
    function podeDesenharNaArea(x,y){
      if(x >= 0 && x < 600 && y >= 0 && y < 80) {
          return false;
      } else {
          return true;
      }
    }
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

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

    desenhaPaletaDeCores(); // mostra os quadrados de seleção de cores

    tela.onmousemove = lidaComMovimentoDoMouse;

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;

    tela.onclick = trocaCor;

</script>
1 resposta
solução!

Oi Bruno tudo bem?

Eu dei uma consertada no seu código.

Mudei os if da função de troca cor, e faltou você passar os parametros x e y para a função podeDesenharNaArea.

<meta charset="UTF-8">

<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, 2 * 3.14);
        pincel.fill();

    }

    function desenhaPaletaDeCores() {

        desenhaQuadrado(xVermelho, yQuadrados, tamanhoQuadrados, 'red');
        desenhaQuadrado(xVerde, yQuadrados, tamanhoQuadrados, 'green');
        desenhaQuadrado(xAzul, yQuadrados, tamanhoQuadrados, 'blue');

    }

    function lidaComMovimentoDoMouse(evento) {

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

        if(desenha && podeDesenharNaArea(x,y)) {

            desenhaCirculo(x, y, 5, corAtual);
        }
    }

    function habilitaDesenhar() {
        desenha = true;
    }

    function desabilitaDesenhar() {

        desenha = false;
    }
    function trocaCor(evento){
      var x = evento.pageX - tela.offsetLeft;
      var y = evento.pageY - tela.offsetTop;
      if ((y>0 && x>0) || (y<50 && x<50)){
        corAtual = "red";
      } if ((y>0 && x>50) || (y<0 && x<100)){
        corAtual = "green";
      } if ((y>0 && x>100) || (y<0 && x<150)){
        corAtual = "blue";
      }
    }
    function podeDesenharNaArea(x,y){
      if(x >= 0 && x < 600 && y >= 0 && y < 80) {
          return false;
      } else {
          return true;
      }
    }
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');
    pincel.fillStyle = 'lightgray';
    pincel.fillRect(0, 0, 600, 400);

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

    desenhaPaletaDeCores(); // mostra os quadrados de seleção de cores

    tela.onmousemove = lidaComMovimentoDoMouse;

    tela.onmousedown = habilitaDesenhar;

    tela.onmouseup = desabilitaDesenhar;

    tela.onclick = trocaCor;

</script>

Espero ter ajudado!!!

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