Ver Mensaje Individual
  #1  
Antiguo 15-12-2010
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Reputación: 18
NEG1414 Va por buen camino
Panel con color degradado

Buenas...

Buscando he encontrada este codigo (Gracias Cesar) que realiza un degradado del color (de Azul a Rojo) de un Form.


Código:
void TForm1::PintarDegradadoH(TCanvas *canvas, TRect& rect, TColor c1, TColor c2,
    int nTonos)
{
    c1 = static_cast<TColor>( ColorToRGB(clNavy) );
    c2 = static_cast<TColor>( ColorToRGB(clRed) );
    //rojo
    int Rf = GetRValue(c1);
    int Rd = GetRValue(c2)-Rf;
    // verde
    int Gf = GetGValue(c1);
    int Gd = GetGValue(c2)-Gf;
    // azul
    int Bf = GetBValue(c1);
    int Bd = GetBValue(c2)-Bf;
    Canvas->Brush->Style =bsClear;
    canvas->Unlock();
    int R, G, B;
    float incremento = (float)nTonos/ (rect.right>1?rect.right:1);
    for (int i= rect.left; i < rect.right; 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 = (Graphics::TColor)RGB(R, G, B);
        canvas->Pen->Color = (TColor) RGB(R, G, B);
        Canvas->MoveTo(i, rect.Bottom );
        Canvas->LineTo(i, rect.Top);
        Canvas->FrameRect(rect);
    }
    canvas->Brush->Color = clRed;
    Canvas->DrawFocusRect(rect);
    canvas->Lock();
}



//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)
{
  PintarDegradadoH(this->Canvas,(TRect )this->GetClientRect(),clBtnFace,clBlack,95);
}
Necesito hacer lo mismo pero solo en un Panel de ese Form ...Alguien puede Indicarme como puedo adaptar el codigo para que realize el degradado solo en el panel

Gracias....
Responder Con Cita