Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Duda-Dibujando con el mouse, bloquear paleta de colores

Hola, ya conseguí cambiar el color del pincel, pero aun no logro bloquear la paleta de colores para que no se pueda dibujar sobre ella, alguien podría ayudarme por favor? Lo intente con la función puedeDibujarArea, pero no funciona.

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

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

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


    var puedoDibujar = false; //Esta variable se activa solo cuando esta presionado el btn izquierdo
    var color;

    function dibujarCirculo(x,y) {
      if(puedoDibujar) {//Si es verdadera...
          pincel.fillStyle = color;
          pincel.beginPath();
          pincel.arc(x, y, 5, 0, 2 * Math.PI); //Se dibuja un circulo en la posicion del puntero
          pincel.fill();
      }
    }

    function puedeDibujarArea(x,y){
        if (x >= 0 && x <= 150 && y >=0 && y < 50) {
            return false;
        }else{return true;}

    }

    function posicionMouse(evento){
      var x = evento.pageX - pantalla.offsetLeft;
      var y = evento.pageY - pantalla.offsetTop;
      if(puedeDibujarArea){dibujarCirculo(x,y);}
    }

    pantalla.onmousemove = posicionMouse; //Permite capturar el movimiento del mouse

    function habilitarDibujar() {
      puedoDibujar = true;
    }

    function deshabilitarDibujar() {
        puedoDibujar = false;
    }

    function paletaDeColores(){
      pincel.fillStyle = 'red';
      pincel.fillRect(0, 0, 50, 50);
      pincel.fillStyle = 'green';
      pincel.fillRect(50, 0, 50, 50);
      pincel.fillStyle = 'blue';
      pincel.fillRect(100, 0, 50, 50);
    }

    function seleccionarColor(evento){
      var x = evento.pageX - pantalla.offsetLeft;
      var y = evento.pageY - pantalla.offsetTop;
      if(x>=0 && x<=50 && y>=0 && y<=50){
        color = "red";
      }
      if(x>=51 && x<=100 && y>=0 && y<=50){
        color = "green";
      }
      if(x>=101 && x<=150 && y>=0 && y<=50){
        color = "blue";
      }
    }

    paletaDeColores();
    pantalla.onclick = seleccionarColor;
    pantalla.onmousedown = habilitarDibujar; //Ejecuta una funcion cuando el mouse esta presionado
    pantalla.onmouseup = deshabilitarDibujar; //Ejecuta una funcion cuando el mouse esta soltado



</script>
1 respuesta

¡Hola, Danna! Deseo que esté bien.

Para bloquear la paleta de colores y que no se pueda dibujar sobre ella, puedes utilizar la función puedeDibujarArea que ya tienes en tu código. Lo que debes hacer es agregar las coordenadas de la paleta de colores en la función, de esta forma:

function puedeDibujarArea(x,y){
    if ((x >= 0 && x <= 150 && y >=0 && y < 50) || (x >= 0 && x <= 150 && y >=0 && y < 50)) {
        return false;
    }else{return true;}
}

En la condición agregamos un || para incluir las coordenadas de la paleta de colores. De esta forma, si el mouse se encuentra en esa área, no se podrá dibujar.

Espero que esto te ayude a resolver tu duda. ¡Buenos estudios!