Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Ejercicio: Diseñando con el 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);

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

    var puedoDibujar = false;

    function cambiarPincel(evento){
        console.log("entra");
        var x = evento.pageX - pantalla.offsetLeft;
        var y = evento.pageY - pantalla.offsetTop;
        if( x >= 0 && y >= 0 &&
            x < 50 && y < 50 ){
            pincel.fillStyle = "red";
            puedoDibujar = false;
        } else {
            if( x >= 50 && y >= 0 &&
                x < 100 && y < 50){
                pincel.fillStyle = "green";
                puedoDibujar = false;
            } else {
                if( x >= 100 && y >= 0 &&
                    x < 150 && y < 50 ){
                    pincel.fillStyle = "blue";
                    puedoDibujar = false;
                }
            }
        }
    }

    function dibujarCirculo(evento) {
        var x = evento.pageX - pantalla.offsetLeft;
        var y = evento.pageY - pantalla.offsetTop;
        var noDibujar = false;
        if( x >= 0 && y >= 0 && x <= 154 && y <= 54){
            noDibujar = true;
        }
        if(puedoDibujar && !noDibujar) {
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();
        }
    }

    pantalla.onclick = cambiarPincel;

    pantalla.onmousemove = dibujarCirculo;

    function habilitarDibujar() {
        puedoDibujar = true;
    }

    function deshabilitarDibujar() {
        puedoDibujar = false;
    }

    pantalla.onmousedown = habilitarDibujar;

    pantalla.onmouseup = deshabilitarDibujar;
</script>
2 respuestas

Te recomiendo una mejora, en tu funcion dibujarCirculo, despues de pintar el punto en la pantalla volve a dibujar los tres selectores de color en el canvas, con esto nunca vas a poder pintar por encima de los cuadros y no hace falta que delimites con los condicionales en que zonas podes dibujar.

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

Hola, sobre tu comentario no lo habia pensado de esa forma, gracias por la recomendación.