Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

no logro entender por que no me sirve en el momento de dibujar

<!DOCTYPE html>
<meta charset="utf-8">
<head>
    <h1>dibujador con mouse </h1>
</head>
<body>
    <canvas width="600" height="400" ></canvas>
    <script>


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

        pincel.fillStyle = "lightgrey";
        pincel.fillRect(0,0,600,400);

        function hacerPaletaColores (x,y,color, tamano ){ // crea un cuadrado de algun color y un tamaño 

            pincel.fillStyle = color;
            pincel.fillRect(x,y,tamano,tamano);


        }
        function escojerColor (evento){ // debe escoger el color cuando se de click en este cuadro 

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

            for (let cont = 0 ; cont < 3; cont++){

            if ((x>(tamPaleta*cont)) && (x<tamPaleta*(cont+1)) && (y<tamPaleta)){

                colorPincel= colorPaleta[cont] ;

                }

            }

        }
        function dibujarCirculo (x,y,color,radio){// dibuja circulos para hacer la ilucion de un pincel 

            pincel.fillStyle= color;
            pincel.beginPath();
            pincel.arc(x,y,radio,0,2*Math.PI)

        }
        function habilitarDibujo (){ // permite dibijar

            permisoDibujo= true ;

        }
        function desabilitarDibujo (){// niega dibujar 

            permisoDibujo= false; 

        }
        function pintarPantalla ( evento ){// dibujar el circulo cuando le sea permitido por la variable permisoDibujo 

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

            if ((x>(tamPaleta*3)) && (y>tamPaleta) ){

                if(permisoDibujo){

                    dibujarCirculo(x,y,colorPincel,20);
                }



            }

        }


        var permisoDibujo= false;
        var colorPaleta=["green","blue","red" ] ; //colores de la paleta 
        var colorPincel= "naranja";
        const tamPaleta = 30; 

        for (let cont = 0 ; cont < 3; cont++){

            hacerPaletaColores((tamPaleta*cont),0,colorPaleta[cont],tamPaleta)

        }

        pantalla.click=escojerColor ;
        pantalla.onmousemove=pintarPantalla ;
        pantalla.onmousedown=habilitarDibujo;
        pantalla.onmouseup=habilitarDibujo;



















    </script>


</body>
1 respuesta
solución!

Te sugiero algunos cambios: incluir la llamada a pincel.fill(), la función dibujarCirculo sea llamada correctamente dentro de pintarPantalla, tambien puedes si quieres cambiar los manejadores de eventos por la función addEventListener. Prueba este codigo, con los consejos señalados.

<!DOCTYPE html>
<meta charset="utf-8">
<head>
    <h1>dibujador con mouse </h1>
</head>
<body>
    <canvas width="600" height="400" ></canvas>
    <script>
        const pantalla = document.querySelector("canvas");
        const pincel = pantalla.getContext("2d");

        pincel.fillStyle = "lightgrey";
        pincel.fillRect(0,0,600,400);

        function hacerPaletaColores(x, y, color, tamano) {
            pincel.fillStyle = color;
            pincel.fillRect(x, y, tamano, tamano);
        }

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

            for (let cont = 0; cont < 3; cont++) {
                if ((x > (tamPaleta * cont)) && (x < tamPaleta * (cont + 1)) && (y < tamPaleta)) {
                    colorPincel = colorPaleta[cont];
                }
            }
        }

        function dibujarCirculo(x, y, color, radio) {
            pincel.fillStyle = color;
            pincel.beginPath();
            pincel.arc(x, y, radio, 0, 2 * Math.PI);
            pincel.fill(); // ¡No olvides llamar a pincel.fill()!
        }

        function habilitarDibujo() {
            permisoDibujo = true;
        }

        function deshabilitarDibujo() {
            permisoDibujo = false;
        }

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

            if ((x > (tamPaleta * 3)) && (y > tamPaleta)) {
                if (permisoDibujo) {
                    dibujarCirculo(x, y, colorPincel, 20);
                }
            }
        }

        var permisoDibujo = false;
        var colorPaleta = ["green", "blue", "red"];
        var colorPincel = "naranja";
        const tamPaleta = 30;

        for (let cont = 0; cont < 3; cont++) {
            hacerPaletaColores((tamPaleta * cont), 0, colorPaleta[cont], tamPaleta);
        }

        pantalla.addEventListener('click', escojerColor);
        pantalla.addEventListener('mousemove', pintarPantalla);
        pantalla.addEventListener('mousedown', habilitarDibujo);
        pantalla.addEventListener('mouseup', deshabilitarDibujo);
    </script>
</body>