1
respuesta

[Proyecto] Diseñar con mouse.

<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 colorPredeterminado = "blue";

    function dibujarCirculo(x,y,colorPredeterminado) {
        if(puedoDibujar) {

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

    function dibujarCuadrado(x,y,color){
        pincel.fillStyle = color;
        pincel.fillRect(x,y,50,50);
        pincel.fill();
    }

    function dibujarPaleta() {
        dibujarCuadrado(0,0,"red");
        dibujarCuadrado(50,0,"green");
        dibujarCuadrado(100,0,"blue");
    }

    function habilitarDibujar () {
        puedoDibujar = true;
    }

    function deshabilitarDibujar() {
        puedoDibujar = false;
    }

    function delimitarEspacio(xCoordenada, yCoordenada) {
  // Tamaño del área de la paleta
  var anchoPaleta = 150;
  var altoPaleta = 50;

  if (
    (xCoordenada >= 0 && xCoordenada < (3*50+5)) &&
    (yCoordenada >= 0 && yCoordenada > (altoPaleta + 5)) &&
    (xCoordenada < anchoPaleta || yCoordenada < altoPaleta)
  ) {
    return false;
  } else {
    return true;
  }
}

    function movimientoMouse(evento) {

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

            if (delimitarEspacio(x,y)) {
                dibujarCirculo(x,y,colorPredeterminado);
            }
    }

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

            if(x > 0 && x < (0+50)) {
                colorPredeterminado = "red";
                console.log(colorPredeterminado);

            } else if(x > 50 && x < (50+50)) {
                colorPredeterminado = "green";


            } else if (x > 100 && x < (100+50)) {
                colorPredeterminado = "blue";

            }

        }


pantalla.onmousemove = movimientoMouse;

pantalla.onmousedown = habilitarDibujar;

pantalla.onmouseup = deshabilitarDibujar;

dibujarPaleta();

pantalla.onclick = escogeColor;  

</script>
1 respuesta

¡Hola Estudante!

En el código que compartiste, se está utilizando el canvas de HTML5 para dibujar en la pantalla. La función dibujarCirculo se encarga de dibujar un círculo en las coordenadas que se le pasan como parámetro. La función dibujarCuadrado dibuja un cuadrado en las coordenadas que se le pasan con un ancho y alto de 50 píxeles.

La función dibujarPaleta dibuja una paleta de colores en la parte superior de la pantalla. Cada cuadrado representa un color diferente: rojo, verde y azul.

La función delimitarEspacio se encarga de verificar si el mouse está dentro del área de dibujo. Si el mouse está dentro del área de la paleta de colores, la función devuelve false y no se dibuja nada.

La función movimientoMouse se encarga de detectar el movimiento del mouse en la pantalla y llama a la función dibujarCirculo para dibujar un círculo en las coordenadas donde se encuentra el mouse.

La función escogeColor se encarga de detectar en qué cuadrado de la paleta de colores se hizo clic y cambia el color predeterminado para dibujar.

Espero que esta explicación te haya sido útil. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)