Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

CONSULTA Quiero saber si voy bien ?

Hola a Todos! Todavia , no puedo hacer que me pinte por color , queria saber si la estructura de la logica esta bien?, no quiero ver el resultado todavia , ni quiero ver el resultado del instructor ...igual queria preguntar como hacer o por donde corregir para que me seleccione cada color cada vez que hago click en cada color...seguramente hay algo mal o seguro que tambien se puede simplificar... pero me estoy esforzando para lograrlo. Desde ya muchas gracias . Saludos y que sigan muy bien!

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

    x = 0;
    cuadrado(x,0,"red");
    x =50;
    cuadrado(x,0,"green");
    x = 100;
    cuadrado(x,0,"blue");

    function defcolor(c){
        color=c;
    }
    var puedoDibujar = false;

        function cuadrado(x,y,color){
        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");
        pincel.fillStyle = color;
        pincel.fillRect(x,y,50,50); 

    }



 pantalla.onmousemove = dibujarCirculo;
    function dibujarCirculo(evento) {

        if(puedoDibujar) {
            var x = evento.pageX - pantalla.offsetLeft;
            var y = evento.pageY - pantalla.offsetTop;
            var x = 0
            pincel.fillStyle = 'color';
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();
            pincel.closePath();
        }

    }

   pantalla.onmousedown = habilitarDibujar;

    function habilitarDibujar(evento) {
        if (puedoDibujar ===true) {
            dibujarCirculo( x , y ,evento.pageX - pantalla.offsetLeft,evento.pageY - pantalla.offsetTop);
            x = evento.pageX - pantalla.offsetLeft;
            y = evento.pageY - pantalla.offsetTop;

        }
    }

    pantalla.onmouseup = deshabilitarDibujar;
    function deshabilitarDibujar(evento) {
        x = evento.pageX - pantalla.offsetLeft;
        y = evento.pageY - pantalla.offsetTop;
        x=0;
        y=0;
        puedoDibujar = false;
    }

</script>
3 respuestas
solución!



Buenas Fabian .  mira estas correcciones.  solo faltaría seleccionar el color deseado. 

pero vas por muy buen camino.


<script>
  var pantalla = document.querySelector('canvas');
  var pincel = pantalla.getContext('2d');
  pincel.fillStyle = 'grey';
  pincel.fillRect(0, 0, 600, 400);

  x = 0;
  cuadrado(x,0,"red");
  x =50;
  cuadrado(x,0,"green");
  x = 100;
  cuadrado(x,0,"blue");

  function defcolor(c){
      color=c;
  }
  var puedoDibujar = false;      //acá va false

      function cuadrado(x,y,color){
      var pantalla = document.querySelector("canvas");
      var pincel = pantalla.getContext("2d");
      pincel.fillStyle = color;
      pincel.fillRect(x,y,50,50); 

      }



   pantalla.onmousemove = dibujarCirculo;
      function dibujarCirculo(evento) {

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

              //aca saque  var x=0

              pincel.fillStyle = 'red';    // aca seleccione el color manualmente
              pincel.beginPath();
              pincel.arc(x, y, 5, 0, 2 * 3.14);
              pincel.fill();
              pincel.closePath();
          }

      }

     pantalla.onmousedown = habilitarDibujar;

      function habilitarDibujar(evento) {
          if (puedoDibujar ===false) {

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

            puedoDibujar = true;    // aca agregue esto.

          }
      }

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

          puedoDibujar = false;
      }

  </script>

Hola Jorge , muchas gracias por tu respuesta , me alienta mucho saber que voy por buen camino .Igualmente estuve viendo que todavía no he logrado acertar que haciendo clic sobre el color del canvas, me dibuje con el color seleccionado...te consulto algo rápido el onmousedown es cuando selecciona el mouse, ahora tendría que lograr hacer una una función dentro de la afirmación onmousedown = habilitarDibujar que seleccione el color o tengo que hacer una variable global? Muchas gracias por todo. Saludos y que sigas bien!

lo resolvi , pero mirando el resultado de otro compa, y ahi me di cuenta que me faltaba dentro de la funcion definir Color hacer un if con las condiciones de los colores . Lo comparto para que verifiquen. Muchas gracias y que sigas bien.!

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



    x = 0;
    cuadrado(x,0,"red");
    x =50;
    cuadrado(x,0,"green");
    x = 100;
    cuadrado(x,0,"blue");
    var puedoDibujar = false;

// dentro de la funcion defColor hacer las if 
    function defColor(evento){ 
         var x = evento.pageX - pantalla.offsetLeft;
    var y =evento.pageY - pantalla.offsetTop;


        if ((x<50)&&(x>0)&&(y<50)&&(y>0)){
        color = "red";
    }
    else if ((x<100)&&(x>50)&&(y<50)&&(y>0)){
        color = "green";
    }
    else if ((x<150)&&(x>100)&&(y<50)&&(y>0)){
        color = "blue";
    }
    }
    pantalla.onclick = defColor;




        function cuadrado(x,y,color){
        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");
        pincel.fillStyle = color;
        pincel.fillRect(x,y,50,50); 

    }



     pantalla.onmousemove = dibujarCirculo;
     function dibujarCirculo(evento) {
        if(puedoDibujar){

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

            pincel.fillStyle = color;
            pincel.beginPath();
            pincel.arc(x, y, 5, 0, 2 * 3.14);
            pincel.fill();
            pincel.closePath();
            console.log(x + "," + y);   
        }

            }



   pantalla.onmousedown = habilitarDibujar;


    function habilitarDibujar(evento) {

        if (puedoDibujar ===false) {


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

         puedoDibujar = true;
        }
    }

    pantalla.onmouseup = deshabilitarDibujar;
    function deshabilitarDibujar(evento) {

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

        puedoDibujar = false;
    }

</script>