 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
TrollS Invitado
|
Publicado: Mar 13 Jul, 2004 11:32 pm Asunto: Degradado en un Form1 |
|
|
| Hola a todos, en el foro encontre la forma de degradar, una celda de un TstringGrid, se podria usar eso, para un formulario o un panel |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 14 Jul, 2004 1:48 am Asunto: |
|
|
Prueba Esto
| Código: | void __fastcall PintarDegradadoH(TCanvas *canvas,TRect& rect,TColor c1, TColor c2,int nTonos)
{
// TCanvas *canvas=F;
// TRect &rect = (TRect &)F->ClipRect ;
c1 = static_cast<TColor>( ColorToRGB(c1) );
c2 = static_cast<TColor>( ColorToRGB(c2) );
int Rf = GetRValue(c1), Gf=GetGValue(c1), Bf=GetBValue(c1);
int Rd = GetRValue(c2)-Rf, Gd=GetGValue(c2)-Gf, Bd=GetBValue(c2)-Bf;
canvas->Brush->Style = bsClear;
canvas->Unlock();
int R, G, B;
float incremento = (float)nTonos / (rect.Height()>1?rect.Height():1);
for (int i=0; i<=rect.Height(); ++i)
{
R = Rf + MulDiv(incremento*i, Rd, nTonos);
G = Gf + MulDiv(incremento*i, Gd, nTonos);
B = Bf + MulDiv(incremento*i, Bd, nTonos);
canvas->Pen->Color = (TColor) RGB(R, G, B);
canvas->MoveTo(rect.left, rect.top+i);
canvas->LineTo(rect.right, rect.top+i);
canvas->FrameRect(rect);
}
canvas->Brush->Color = clBlack;
canvas->DrawFocusRect(rect);
canvas->Lock();
} |
y una forma de utilizarlo es la siguente dentro del Evento OnPaint del Form
| Código: | void __fastcall TForm1::FormPaint(TObject *Sender)
{
// PintarDegradadoH(this->Canvas,(TRect &)this->GetClientRect(),clBtnFace,clBlack,95);
}
//---------------------------------------------------------------------------
|
Saludos _________________
 |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 14 Jul, 2004 1:50 am Asunto: |
|
|
| Cita: | void __fastcall TFESTACION::FormPaint(TObject *Sender)
{
PintarDegradadoH(this->Canvas,(TRect &)this->GetClientRect(),clBtnFace,clBlack,95);
}
//--------------------------------------------------------------------------- |
Perdon sin las diagonales de comentario _________________
 |
|
| Volver arriba |
|
 |
Trolls Invitado
|
Publicado: Mie 14 Jul, 2004 4:39 pm Asunto: |
|
|
| Gracias César, funcionó super bien. |
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Mie 14 Jul, 2004 6:02 pm Asunto: |
|
|
Va bien, pero si modificamos el tamaño del form queda un efecto feo de no actualizar. ¿Como se podria resolver?.
Un saludo. |
|
| Volver arriba |
|
 |
TrollS Invitado
|
Publicado: Mie 14 Jul, 2004 8:12 pm Asunto: |
|
|
| En el evento Resize(), del Formulario, llamas al Paint() |
|
| Volver arriba |
|
 |
kalux Master


Registrado: 21 Nov 2003Mensajes: 313Ubicación: Alicante - España
|
Publicado: Mie 14 Jul, 2004 9:22 pm Asunto: |
|
|
Eso fue lo primero que hice. Pero se queda bloqueado.
Un saludo. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 15 Jul, 2004 2:28 pm Asunto: |
|
|
al Parecer, al momento del OnResize, no existe aun color que degradar.. ya que el formulario, aun no ha sido pintado... lo que se pude hacer es utilizar una bandera de pintado o no pintado, despues de que el evento on paint, se ha realizado...si se pude mejorar, pues para eso estamos..
saludos _________________
 |
|
| Volver arriba |
|
 |
GB Invitado
|
Publicado: Vie 10 Sep, 2004 4:03 am Asunto: |
|
|
| Esta muy bien , pero como se puede arreglar el problemita al cambiar el tamaño, no pinta de nuevo, y si pongo el paint() en el resize() el programa se cuelga; |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Vie 10 Sep, 2004 5:01 am Asunto: |
|
|
Hola a todos:
| Código: |
void __fastcall TForm1::FormResize(TObject *Sender)
{
Invalidate();
}
|
saludos |
|
| Volver arriba |
|
 |
GB Invitado
|
Publicado: Vie 10 Sep, 2004 9:51 pm Asunto: Gracias Felip |
|
|
Gracias Felip, funciono de maravilla, gracias.
Al pintar el form Principal anda muy bien, pero si agrago un form tipo Child, no pinta nada, como se podria solucionar |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|