jueves, 23 de febrero de 2012

Efecto Spray

Hola de nuevo amigos! Me alegro de saludarlos y pues en esta ocasión continuaremos con las aplicaciones gráficas en C++ Builder. El programa que realizaremos en esta ocasión será el famoso efecto de spray que puede tomar la brocha en el programa paint de Windows, ya alguna vez debieron de haberlo utilizado.

Pues empezamos con nuestra aplicación y lo primero que necesitamos es cambiar el color de la forma a blanco en su propiedad Color cambiamos el valor por defecto a clWhite. Después colocamos los siguientes componentes en la forma:

-1 GroupBox
-4 etiquetas o Labels
-3 TrackBar
-1 Edit o caja de texto
-1 UpDown

La forma debe quedar de la siguiente manera:


Lo primero que necesitamos es asociar al UpDown con el Edit. Luego configuramos los valores del UpDown en 0 como mínimo y 100 como máximo.

Bien pues en esta aplicación trabajaremos sobre los eventos de la forma, especialmente en 2. El primero de ellos es el evento OnMouseDown de dicha forma, en él escribimos el siguiente código:


void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
        for(int N = 0; N < 100; N++)
        {
                Puntos[N].x = random(Edit1->Text.ToInt()) + X;
                Puntos[N].y = random(Edit1->Text.ToInt()) + Y;
                Canvas->Pixels[Puntos[N].x][Puntos[N].y]=(TColor)RGB(TrackBar1->Position,TrackBar2->Position,TrackBar3->Position);
        }
}
//---------------------------------------------------------------------------


El código anterior nos sirve para dibujar de manera aleatoria los pixeles y simular el efecto spray de la brocha con el color dependiendo de las posiciones de los TrackBar, siendo cada una de éstas uno de los valores del RGB. Ahora abrimos el evento OnMouseMove de la forma y tecleamos el código que tenemos a continuación:


void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        if(Shift.Contains(ssLeft))
        {
                FormMouseDown(Sender, mbLeft, Shift, X, Y);
        }
}
//---------------------------------------------------------------------------


En el evento anterior lo que hacemos es llamar al evento FormMouseMove cada vez que se mueve el cursor del mouse sobre la forma, dibujando los pixeles aleatorios por cada parte de la forma por la que se mueve el mouse.

Ahora compilamos nuestra aplicación y la corremos para observar nuestro resultado:


De ésta manera descubrimos que los efectos que se generan en programas como el paint de Windows no son por obra de magia sino que son efectos que nosotros podemos programar. Y bueno pues por esta ocasión es todo por mi parte, espero que hayamos aprendido un poco más de lo que ya sabíamos y nos vemos en la siguiente ocasión para seguir con más aplicaciones. Hasta luego amigos!

No hay comentarios:

Publicar un comentario