4
respuestas

[Proyecto] DisenharConMouse

Buenas noches! Les comparto lo que hice.

Cualquier comentario o duda es bienvenido!

<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;

    var colores = ['red', 'green', 'blue'];
    var colorPintar = 'blue';



    function dibujarCuadrado(x,y,colour){

        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");

        pincel.fillStyle = colour;
        pincel.fillRect(x,y,50,50);
        pincel.strokeStyle = "black";
        pincel.strokeRect(x,y,50,50);


    }

    function detectar(evento){

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

            if((x <= 50 && y <= 50)){

                colorPintar = colores[0];


            }else if((x <= 100 && y <= 50)){

                colorPintar = colores[1];

            }else if((x <= 150 && y <= 50)){

                colorPintar = colores[2];

            } 

    }

    dibujarCuadrado(0,0,'red');
    dibujarCuadrado(50,0,'green');
    dibujarCuadrado(100,0,'blue');

    function dibujarCirculo(evento) {

        if(puedoDibujar) {
            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;

            if(!(x <= 150 && y <= 50)){ //Agrego condicion para que no se pueda dibujar en los cuadrados.

            pincel.fillStyle = colorPintar;
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();

            }

        }

    }

    pantalla.onmousemove = dibujarCirculo;

    function habilitarDibujar() {

        puedoDibujar = true;
    }

    function deshabilitarDibujar() {

        puedoDibujar = false;
    }

    pantalla.onmousedown = habilitarDibujar;

    pantalla.onmouseup = deshabilitarDibujar;

    pantalla.onclick = detectar;

</script>
4 respuestas

Eres un master de verdad, siento que me falta muchas horas de practica para alcanzar este gran nivel. Muchas gracias por e valioso aporte

Facundo, excelente aporte para delimitar la paleta de colores al colocar el signo de negación (!) y cambiando los operadores de comparación diferentes a los míos, en esa condición en el if(), porque de esa forma resulta muy sencilla pero muy eficaz. Yo había colocado la condición pero sin el signo de negación y con una x>150 y una y>50 y no me permitía dibujar exactamente debajo ni al lado derecho de la paleta, reduciéndome el espacio para dibujar del tamaño de una pizarra de 450x350 y no encontraba como habilitar esos espacios y se le agradece por ello...Así como está planteada en el ejercicio de práctica resulta un poco complicado para implementar...

Tiene otra lógica pero lo pude comprender perfectamente ya que esta mas simplificado, esta interesante la parte donde se usa el índice del array para seleccionar la paleta de colores buen trabajo.

Gracias por compartir muy interesante la lógica.

Gran trabajo

A seguir aprendiendo de todos