Plochy s farebným prechodom vyzerajú oveľa lepšie a prirodzenejšie ako jednofarbné. Stačí iba trochu matematiky s jednotlivými zložkami farby a je to.

procedure DrawGradient(Canvas: TCanvas; Color1, Color2: TColor; Rect: TRect);
var
  Y, R, G, B: Integer;
begin
  for Y := Rect.Top to Rect.Bottom do
  begin
    R := Round(GetRValue(Color1) + ((GetRValue(Color2) - GetRValue(Color1)) * Y / (Rect.Bottom - Rect.Top)));
    G := Round(GetGValue(Color1) + ((GetGValue(Color2) - GetGValue(Color1)) * Y / (Rect.Bottom - Rect.Top)));
    B := Round(GetBValue(Color1) + ((GetBValue(Color2) - GetBValue(Color1)) * Y / (Rect.Bottom - Rect.Top)));
 
    Canvas.Pen.Color := RGB(R, G, B);
    Canvas.Pen.Width := 2;
    Canvas.Pen.Style := psInsideFrame;
 
    Canvas.MoveTo(Rect.Left, Y);
    Canvas.LineTo(Rect.Right, Y);
  end;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  DrawGradient(Canvas,clBlue,clRed,ClientRect);
end;