domingo, 7 de octubre de 2012

Creando un Paint en C++ Parte 4

Pues aquí llega la ultima entrega del pequeño y simple editor de imagen. Se añadirá un botón de guardado y otro para obtener el color.

Para evitar hacer muchos cambios en nuestro código anterior los dos botones nuevos los he añadido al final, pero solamente se hizo de esta manera por comodidad y no tener que modificar lo que ya se tiene hecho, lo suyo es que todos los botones queden juntos en un mismo lado.

Por tanto, nuestro panel de botones quedará de la siguiente forma:


Para poder guardar la imagen se necesita una variable del tipo palette, por ello se crea la variable global pal. Y tambien se debe declarar la variable marcador, que es una imagen BITMAP.

PALETTE pal;
BITMAP *marcador;

En la función cambiaccion debemos de añadir las siguientes lineas:
     if (mouse_x > 256 && mouse_x < 288 &&
         mouse_y > 1   && mouse_y < 32 ){
               rect( buffer, 256,1,286,30, 0x666666 );  
               // guarda imagen
               get_palette(pal);
               save_bitmap("Koday1.bmp", dibujo, pal);  
         }

     if (mouse_x > 256 && mouse_x < 288 &&
         mouse_y > 32 && mouse_y < 64){
               rect( buffer, 256,33,286,62, 0x666666 );  
               accion = 5; 
         }

En la primera condición se controla si se pulsa el botón guardar. Aquí se ha utilizado la forma mas sencilla de guardar la imagen, pero no quiere decir que sea la correcta. El comando rect se utiliza para pintar un recuadro que encasilla el botón, el comando get_palette obtiene la paleta actual y se asigna a la variable pal, y finalmente con save_bitmap se guarda como un BMP la imagen dibujo, con el nombre de "Koday1.bmp". Esto quiere decir que siempre que se pulse guardar se guarda sobre la misma imagen llamada koday1, para evitar esto deberíamos hacer que nos pidiera un nombre o generar un nombre que se autoincremente para que no se sobreescriban las imagenes, pero como dije antes lo hice así para simplificar.

En la segunda condición controlamos el ultimo botón, que lo asignamos a la acción 5.

Dentro de la funcion  realizaccion() se debe añadir el siguiente codigo:
      case 5:
           colora = getpixel(dibujo, mouse_x, mouse_y);
           break;
De esta manera cuando accion tenga el valor 5, asignará a colora el color del pixel apuntado.

Ahora añadiremos algo que me falto en la entrega anterior, para completar los botones de seleccion de color, que nos va a indicar el valor de cada uno de los colores RGB.
void Pinta_botones(){
     rectfill( buffer, 192,1,255,63, makecol(colorR,colorG,colorB));         
     masked_blit( botones, buffer, 0,0, 0,0,288, 64); 
     rectfill( buffer, 208,15,225,33, colora);
     int n = int (colorR*73 / 255 );
     blit( marcador, buffer, 0,0, 90+n,1,3,20);
     n = int (colorG*73 / 255 );
     blit( marcador, buffer, 0,0, 90+n,22,3,20);
     n = int (colorB*73 / 255 );
     blit( marcador, buffer, 0,0, 90+n,44,3,20);     
};

Sustituimos la funcion Pinta_botones(), para tener los marcadores de los colores, y ademas debemos de añadir:
 
 botones = load_bmp("bton-2.bmp",NULL);
 marcador = load_bmp("cselect.bmp",NULL);

Que se encuentra en la funcion principal. Al igual que en la otra entrega para poner la nueva imagen del panel de botones, se tiene dos opciones o se cambia el nombre como se ha hecho, o sobreescribimos la imagen. En este caso la imagen del nuevo panel se llama bton-2.bmp. La imagen cselect es la siguiente :


Al cambiar el tamaño del panel de botones, tambien se debe de modificar la funcion Sobre_boton().
bool Sobre_boton(){
     return ( mouse_x >0 && mouse_x < 288 &&
              mouse_y >0 && mouse_y < 64 );
};

Y hasta aqui ha llegado el curso. A nuestro editor podremos añadirle mas botones o cambiarlos de lugar, segun se quiera, espero que os resulte util. A continuación os dejo un ejemplo de algunas posibles mejoras.


Recuerda que este tutorial es la continuación del curso Creando un paint :
Parte 1Parte 2Parte 3

5 comentarios:

  1. Perdon por hacerle perder el tiempo pero podria dejar en un comentario el link para descargarlo? gracias :DD

    ResponderEliminar
    Respuestas
    1. Bueno si realmente hubiese querido ponerlo entero para descargarlo, no lo hubiese hecho en cuatro partes. Y lo hice asi para que lo lean y copien poco a poco. Para tenerlo completo solo tienes que seguir los pasos desde el principio ... suerte ^_^

      Eliminar
    2. hey me perdi donde creo el #include

      Eliminar
    3. Que include ?? ... si te has perdido vuelve a leerlo, o vuelve al anterior. Debes seguir los pasos.

      Eliminar
  2. Perdon otra vez pero es que quedria aprender y entrar en el mundo de allegro me podria usted decir como aprender? gracias por el tiempo :)

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...