domingo, 26 de febrero de 2012

Manipulación Y Manejo De Colores

Hola de nuevo amigos, ya estoy de nueva cuenta aquí para seguir realizando más aplicaciones gráficas en C++ Builder.

Bien pues en esta ocasión haremos una aplicación para mostrar un poco más sobre el manejo de los colores en C++. Será bastante sencillo pero muy importante para más adelante usarlo.

Bueno pues comenzamos como siempre con los componentes que necesitamos colocar en la Forma, los cuales los listamos a continuación:

-3 Labels
-3 TrackBar (con valores de 0 a 255)
-1 Panel
-1 Shape
-3 BitBtn (los cuales son como los botones normales pero a estos les podemos colocar una imágen personalizada en su propiedad Glyph)

La Forma en mi caso queda de la siguiente manera, aunque ustedes pueden acomodar sus componentes como gusten:


Ahora comenzamos con la codificación de los componentes correspondientes. El primero que necesitamos será el TrackBar1, damos clic en él y escribimos el siguiente código:


void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
        Panel1->Color=(TColor)RGB(TrackBar1->Position,TrackBar2->Position,TrackBar3->Position);      
}
//---------------------------------------------------------------------------


Para ahorrar espacio y no escribir tanto código utilizaremos el evento del TrackBar1 para los 2 restantes, ya que para todos el código es el mismo. Lo anterior lo haremos seleccionando uno de los TrackBar que no tienen código, luego en el Object Inspector que se encuentra en la parte inferior izquierda cambiamos a la pestaña Events y en la lista desplegable del evento OnChange seleccionamos la opción TrackBar1Change. Hacemos lo mismo con el último TrackBar.

Ahora damos doble clic en el botón que dice "Rojo", y escribimos el siguiente código:


void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
        TRect Rect(0,0,Image1->Width,Image1->Height);
        Image1->Canvas->FillRect(Rect);
        Randomize();
        for (int i=0; i<15000; i++)
                Image1->Canvas->Pixels[random(Image1->Width)][random(Image1->Height)]=(TColor)RGB(255,0,0);
}
//---------------------------------------------------------------------------


Con lo anterior dibujamos 15,000 puntos de color rojo en un lugar aleatorio dentro del área del Shape. Luego damos doble clic en el botón "Verde" y escribimos el código siguiente:


void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
        TRect Rect(0,0,Image1->Width,Image1->Height);
        Image1->Canvas->FillRect(Rect);
        Randomize();
        for (int i=0; i<15000; i++)
                Image1->Canvas->Pixels[random(Image1->Width)][random(Image1->Height)]=(TColor)RGB(0,255,0);
}
//---------------------------------------------------------------------------


Con esto lo que hacemos es dibujar en posiciones aleatorias 15,000 puntos de color verde dentro del área del Shape. Ahora en el ultimo BitbBtn que dice "Azul", escribimos este código:


void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
        TRect Rect(0,0,Image1->Width,Image1->Height);
        Image1->Canvas->FillRect(Rect);
        for (int i=0; i<15000; i++)
                Image1->Canvas->Pixels[random(Image1->Width)][random(Image1->Height)]=(TColor)RGB(0,0,255);
}
//---------------------------------------------------------------------------


Esto lo que hará sera dibujar 15,000 puntos en algún lugar aleatorio dentro del área del Shape.

Finalmente abrimos el evento OnCreate de la forma y en él escribimos el siguiente código que nos servirá para evitar el parpadeo al momento de repintar los componentes:


void __fastcall TForm1::FormCreate(TObject *Sender)
{
        this->DoubleBuffered=true;
        Randomize();
}
//---------------------------------------------------------------------------


Ya para terminar compilan y corren su aplicación y el resultado debe ser algo como lo siguiente:


Bueno amigos pues por hoy eso es todo, nos vemos la próxima ocasión para realizar otra aplicación de graficación en C++ Builder. Hasta la próxima chavos.

No hay comentarios:

Publicar un comentario