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

[Proyecto] Dibujando con el Mouse

Hola compañeros, les comparto mi codigo, tuve ciertas dificultades, pero me ayudaron mucho en Discord, gracias.

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

<script type="text/javascript">
    var pantalla = document.querySelector('canvas');
    var pincel = pantalla.getContext('2d');

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

    var puedoDibujar = false;
    var colores = ["red", "green", "blue"];
    var posicion = 0;
    var A = colores.length;
    var i = 0;
    var xC = 0;
    var base = 50;
    var colorDefault = "blue";



    function dibujarCirculo(x,y, color) {

        if(puedoDibujar) {
            pincel.fillStyle = color;
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();
        }

    }



    function dibujarCuadrado(x, y, base, color) {

        pincel.fillStyle = color;
        pincel.fillRect(x,y, base, base);
        pincel.strokeStyle = "black";
        pincel.strokeRect(x,y, base, base);
    }

    function paletaColores(){

        for(i = 0; i < A; i ++){
            dibujarCuadrado(xC, 0, base, colores[i]);
            xC = xC + 50;
        }
    }

    pantalla.onmousemove = dibujarCirculo;

    function habilitarDibujar() {

        puedoDibujar = true;
    }

    function deshabilitarDibujar() {

        puedoDibujar = false;
    }

    function areaDibujo(posicionX, posicionY){
        limiteX = (base * 3) + 10;
        limiteY = base + 10;
        if((posicionX >= 0 && posicionX < limiteX) && (posicionY >= 0 && posicionY < limiteY)){

            return false;

        } else{
            return true;
        }

    }

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

        if(areaDibujo(x,y)){
            dibujarCirculo(x,y,colorDefault);
        }
    }

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

        if(y > 0 && y <= base){
            //rojo
            if(x > 0 && x <= base){
                posicion = 0;
                colorDefault = colores[posicion];

            } else if(x > base && x <= (base*2)){
                posicion = 1;
                colorDefault = colores[posicion];
            } else if(x > (base*2) && x <= (base*3)){
                posicion = 2;
                colorDefault = colores[posicion];
            }
        }

    }

    pantalla.onmousemove = coordenadasMouse;

    pantalla.onmousedown = habilitarDibujar;

    pantalla.onmouseup = deshabilitarDibujar;

    paletaColores();

    pantalla.onclick = cambiaColor;

</script>
1 respuesta

¡Hola Ricardo!

Gracias por compartir tu código con nosotros. Veo que creaste una aplicación que permite dibujar en un canvas utilizando el mouse y cambiar el color del trazo seleccionando uno de los tres colores disponibles en la paleta. Me alegra que hayas encontrado ayuda en Discord para solucionar tus dificultades.

Sin embargo, noté que en la función "coordenadasMouse" estás dibujando un círculo en lugar de un trazo continuo. Para lograr esto, puedes utilizar las funciones "beginPath()" y "lineTo()" en lugar de "arc()". Te dejo un ejemplo de cómo podrías modificar la función:

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

    if(areaDibujo(x,y)){
        pincel.beginPath();
        pincel.moveTo(x, y);
        pincel.lineTo(x + 1, y + 1);
        pincel.strokeStyle = colorDefault;
        pincel.stroke();
    }
}

De esta manera, cada vez que el mouse se mueva dentro del área de dibujo, se creará un trazo continuo con el color seleccionado.

Espero que esta información te sea útil. ¡Buenos estudios!

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