domingo, 30 de septiembre de 2012

Creando un Paint en C++ Parte 2

Aquí ya tengo la segunda entrega del paint. En la primera parte, ya se hacia el uso de una imagen llamada botones. La imagen bton.bmp para nuestro ejemplo tiene las siguientes dimensiones de 64 x 64, ya que cada boton tiene un maximo de 32x32, con lo cual en nuestra imagen tendremos 4 botones.

En este ejemplo, de izquierda a derecha y de arriba a abajo, el primer botón se utilizará para borrar la imagen, el segundo botón para borrar un punto de la imagen, el tercero para rellenar con un color, y cuarto botón para pintar.


Funciones

Cambiaccion()

Esta función, se encarga de comprobar si se pulsa el ratón sobre uno de los botones. Y da un valor a accion del botón pulsado. En este caso como tenemos cuatro botones, se tiene cuatro condiciones, en cada una de ellas hay un comando rect que se utiliza para pintar un cuadrado sobre la imagen del botón y asi ver cual tenemos seleccionado. En el caso de que sea pulsado el botón derecho ( mouse_b&1 ) se da un valor a la variable accion según el botón que se ha pulsado.

// solo para boton izquierdo
void cambiaccion(){
     if (mouse_x > 0 && mouse_x < 32 &&
         mouse_y > 0 && mouse_y < 32){
          rect( buffer, 1,1,30,30, 0x666666 );    
          if ( mouse_b&1 ) accion = 1 ;              
     }
     if (mouse_x > 32 && mouse_x < 64 &&
         mouse_y > 0 && mouse_y < 32){
          rect( buffer, 33,1,62,30, 0x666666 );       
          if ( mouse_b&1 ) accion = 2;          
     }     
     if (mouse_x > 0 && mouse_x < 32 &&
         mouse_y > 32 && mouse_y < 64){
          rect( buffer, 1,33,30,62, 0x666666 );      
          if ( mouse_b&1 ) accion = 3; 
     }
     if (mouse_x > 32 && mouse_x < 64 &&
         mouse_y > 32 && mouse_y < 64){
          rect( buffer, 33,33,62,62, 0x666666 );  
          if ( mouse_b&1 ) accion = 4;      
     } 
};

Realizaccion()

Esta función según el valor de la variable accion, realizará la acción correspondiente al botón pulsado. Al igual que la función anterior se tiene cuatro posibles acciones. Cuando accion vale 1, se realiza un clear_to_color, es decir, borrar la imagen dibujo y lo pinta con un color en este caso el color blanco ( 0xFFFFFF ). Para el valor 2, realiza la accion putpixel, que se encarga de pintar un punto segun las coordenadas del raton. ( mouse_x, mouse_y ) de color blanco. En el caso 3, deberiamos poner la instrucion para rellenar un area con un color. Y cuando el valor de la variable accion es 4, pinta un punto de color negro en la posición que apunta el ratón.

void realizaccion(){
     switch(accion){
     case 1:
             clear_to_color(dibujo, 0xFFFFFF); 
             break;               
     case 2:
             putpixel( dibujo, mouse_x, mouse_y, 0xffffff);
             break;
     case 3:
          //  rellenamos con un color
            break;                    
     case 4: 
           putpixel( dibujo, mouse_x, mouse_y, 0x000000);      
           break;

     };
};

Y con estas dos funciones ya tenemos para poder pintar puntos y borrar. En nuestra tercera entrega se intentará reducir el código y añadir nuevas funciones y botones al editor.

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...