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

le intenté mucho rato pero al final tuve que replicar el del instructor jej. Pero genial todo, ahí la ire cogiendo poco a poco

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

    var puedoDibujar = false;

    //Variables para dibujar la paleta
    var xRojo = 0;
    var xVerde  = 50;
    var xAzul = 100;
    var yCuadrados = 0;
    var tamanhoCuadrados = 50;
    var colorActual = "blue";

    function dibujarCirculo(x,y,colorActual ) {

        if(puedoDibujar) {

            pincel.fillStyle = colorActual;
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();

        }
    }

    //Función para dibujar cada uno de los cuadrados de la paleta
    function dibujarCuadrado(x, y, tamanho, color) {

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

    }

    //Función para dibujar la paleta de colores
    function dibujarPaletaColores() {

        dibujarCuadrado(xRojo, yCuadrados, tamanhoCuadrados, 'red');
        dibujarCuadrado(xVerde, yCuadrados, tamanhoCuadrados, 'green');
        dibujarCuadrado(xAzul, yCuadrados, tamanhoCuadrados, 'blue');

    }

    function habilitarDibujar() {

        puedoDibujar = true;

    }

    function deshabilitarDibujar() {

        puedoDibujar = false;

    }

    //Función para delimitar el área
    function puedeDisenharArea(xCoordenada,yCoordenada){

        if ((xCoordenada >= 0 && xCoordenada < (3*tamanhoCuadrados+5)) && 
            (yCoordenada >=0 && yCoordenada < (tamanhoCuadrados+5))) {

            return false;

        } else{

            return true;

        }

    }    

    function capturarMovimientoDelMouse(evento){

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

        if (puedeDisenharArea(x,y)){

                dibujarCirculo(x,y,colorActual);

        }

    }

    function seleccionarColor(evento) {

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

        //Cada condición altera el color de la variable colorActual

        //Comenzamos por la condición del eje Y que es común para todas
        if (y > yCuadrados && y < (yCuadrados + tamanhoCuadrados)) {

            if(x > xRojo && x < (xRojo + tamanhoCuadrados)) {

                colorActual = "red";
                console.log(colorActual);

            } else if (x > xVerde && x < (xVerde + tamanhoCuadrados)) {

                colorActual = "green";

            } else if(x > xAzul && x < (xAzul + tamanhoCuadrados)) {

                colorActual = "blue";

            }            


        }


    }

    pantalla.onmousemove = capturarMovimientoDelMouse;

    pantalla.onmousedown = habilitarDibujar;

    pantalla.onmouseup = deshabilitarDibujar;

    dibujarPaletaColores();

    pantalla.onclick = seleccionarColor;






</script>
3 respuestas

Hola te comparto mi codigo:

<script>
var pantalla = document.querySelector('canvas');
var pincel = pantalla.getContext('2d');

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

var puedoDibujar = false;
let coloresPaleta = ['red', 'green', 'blue'];
let colorEscogido;
let xp = 0, yp = 50;

pincel.fillStyle = coloresPaleta[2];

let paletaColores = (xp)=>{
    for(let c of coloresPaleta){
        pincel.fillStyle = c;
        pincel.fillRect(xp, 0, 50, yp);
        xp += 50;
    }
}

let escogerColores = (evento)=> {

    xp = evento.pageX - pantalla.offsetLeft;
    yp = evento.pageY - pantalla.offsetTop;

    if ((xp < 50) && (yp = 50)){
        colorEscogido = 0;
        return alert("Escogiste  un color: " + coloresPaleta[0]);
    }
    if (((xp > 50 && xp < 100)) && (yp = 50)){
        colorEscogido = 1;
        return alert("Escogiste  un color: " + coloresPaleta[1]);
    }
    if (((xp > 100 && xp < 150)) && (yp = 50)){
        colorEscogido = 2;
        return alert("Escogiste  un color: " + coloresPaleta[2]);
    }
}

function dibujarCirculo(evento) {

    if(puedoDibujar) {

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

        if (x < 155 && y < 55){
           puedoDibujar = false;
        } else {
            pincel.fillStyle = coloresPaleta[colorEscogido];
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();
        }


    }

}

function habilitarDibujar() {

    puedoDibujar = true;
}

function deshabilitarDibujar() {

    puedoDibujar = false;
}

paletaColores(xp);
pantalla.onclick = escogerColores;

pantalla.onmousemove = dibujarCirculo;

pantalla.onmousedown = habilitarDibujar;

pantalla.onmouseup = deshabilitarDibujar;
</script>

Hola, compañero permíteme darte una sugerencia, cuando se te presente un ejercicio trata de hacerlo tú mismo lo máximo que puedas, no pasa nada si te quedas atorado en alguna parte o si no sabes cómo hacer algo, pero para esto es este foro, para que preguntes las dudas en específico que tengas y así puedas aprender, porque la única manera en la que aprendes a codificar es haciendo estos ejercicios y poniendo a trabajar tu ingenio. Espero que no te moleste mi comentario, solamente es una simple recomendación para que puedas aprender mejor, saludos.

Muchas gracias, pero si es que eso estuve intentando, intenté incluso mas de una hora pero no me daba, ya al final tuve que mirar.