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 + Borrar + Cualquier color

Hola este en mi ajuste, me costó un poco de trabajo

espero sus comentarios y correcciones, muchas gracias.

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

<script>
    var pantalla = document.querySelector('canvas');
    var pincel = pantalla.getContext('2d');
    var colores = ['blue','red','green',"yellow","purple"];
    var selectColor = 'purple';
    var increment = 50;

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

    var puedoDibujar = false;

    function dibujarCirculo(evento) {
        if(puedoDibujar) {
            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;
            var yTope = increment + 5

            if (  y > yTope ){   
                pincel.fillStyle = selectColor;
                pincel.beginPath();
                pincel.arc(x, y, 10, 0, 1 * 3.14);
                pincel.fill();
            }
        }
    }

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

    function paletaColores(){
        var x = increment;
        for(var i = 0; i < colores.length; i++){
            dibujarCuadrado(x,0,colores[i]);
            x += increment;
        }
    }

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

        for(var i = 1; i <= ( colores.length + 1 ) ; i++){
            if(x > 0 && x < increment * i && y > 0 && y < increment){
                index = i;
                break;
            }
        }

        if(index == 1){ 
            borrar();
        }else{
            selectColor = colores[index - 2]
        }

    }

    function borrar(){
        pincel.clearRect(0, increment, pantalla.width, pantalla.height);
        pincel.fillStyle = 'grey';
        pincel.fillRect(0, increment, 800, 600);
    }

    pantalla.onmousemove = dibujarCirculo;

    function habilitarDibujar() {
        puedoDibujar = true;
    }

    function deshabilitarDibujar() {
        puedoDibujar = false;
    }

    pantalla.onmousedown = habilitarDibujar;
    pantalla.onmouseup = deshabilitarDibujar;
    pantalla.onclick = seleccionaColor;

    paletaColores();
    dibujarCuadrado(0,0,"white");

</script>
1 respuesta

Hola compañero, me gustó como resolviste tus funciones paletaColores y seleccionarColor.

También podrías agregar un tope en X en la función dibujarCirculo para que se pudiera pintar en toda el área gris.