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

Diseñando con el mouse - modificaciones incluidas

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Paint</title>
</head>
<body>
    <h1>Paint</h1>
    <canvas class="lienzo" width="600px" height="400px"></canvas>
    <br>
    <canvas class="color" width="120px" height="40px"></canvas>
    <h3>Rojo</h3>

    <button class="clear">Limpiar</button>

    <script>
        let button = document.querySelector(".clear");
        let select = document.querySelector("h3");
        let canvas = document.querySelector(".lienzo");
        let color = document.querySelector(".color");
        let ctx = canvas.getContext("2d");
        let ctxC = color.getContext("2d");

        let colors = ["#E0115F", "#93C572", "#40B5AD"];
        let colorsS = 0;
        let line = false;

        clear();

        palette(0,0,40,40,colors[0]);
        palette(40,0,40,40,colors[1]);
        palette(80,0,40,40,colors[2]);
        area(colors[colorsS]);

        canvas.addEventListener("mousemove", draw);
        canvas.addEventListener("mousedown", down);
        canvas.addEventListener("mouseup", up);
        color.addEventListener("click", change);
        button.addEventListener("click", clear);

        //La función area es innecesaria pero tiene la tarea de practicar la restricción de área dentro de un canvas.  Muestra el color que se seleccionó en la paleta pero en el lienzo.

        function area(){
            ctx.fillStyle = colors[colorsS];// 
            ctx.fillRect(0,0,40,40);
        }

        function palette(x,y,width,height,color){        //Función para un canvas que contenga los colores.
            ctxC.fillStyle = color;
            ctxC.fillRect(x,y,width,height);
        }

        function draw(event){
            if(line){
                let x = event.pageX - canvas.offsetLeft;    //función que pinta dependiendo del mouse.
                let y = event.pageY - canvas.offsetTop;

                if (x > 40 || y > 40){                    //Condición de restricción para la función área.
                    ctx.fillStyle = colors[colorsS];
                    ctx.beginPath();
                    ctx.arc(x, y, 4, 0, 2*3.14);
                    ctx.fill();
                }
            }
        }

        function change(event){                            //función de cambio de color con canvas secundario.
            let x = event.pageX - color.offsetLeft;
            let y = event.pageY - color.offsetTop;

            if (x < 40){
                colorsS = 0;
                select.textContent = "Rojo";
                area();
            }
            if (x > 40 && x < 80){
                colorsS = 1;
                select.textContent = "Verde";
                area();
            }
            if (x > 80 && x < 120){
                colorsS = 2;
                select.textContent = "Azul";
                area();
            }
        }

        function down(){            //función para dibujar mientras se presiona el botón.
            line = true;
        }

        function up(){                //función para dejar de dibujar mientras el botón no se presiona.
            line = false;
        }

        function clear(){                //función para reestablecer lienzo.
            ctx.clearRect(0,0,600,400)
            ctx.fillStyle = "lightgrey";
            ctx.fillRect(0,0,600,400);
            area();
        }

    </script>
</body>
</html>

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

1 respuesta

Hola Javier, espero que estés bien.

Te felicito por los avances en los estudios en Lógica de programación y deseo que obtengas éxito en todo lo que te propongas.

Para agilizar el tiempo de respuesta en caso de dudas relacionadas con los cursos, estamos priorizando el foro para postear dudas. Por favor, recuerda utilizar las etiquetas para indicarnos si tu consulta es una duda, sugerencia o cualquier otro tema. De esta manera, podremos filtrar y procesar las dudas y consultas de manera más eficiente, mejorando aún más nuestro desempeño y tiempo de respuesta.

En caso de que desees compartir tus ejercicios o comentarios, dispusimos en Discord un canal exclusivo para ese fin.

Te dejo este link que muestra como puedes compartir tus dudas y si necesitas ayuda acerca del contenido de los cursos, aquí estaremos. :)

¡Saludos!

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