My previous post I wrote about how to reduce flicker on a gradient background and did not mention how to create a gradient background. Here is how I create a gradient background.
Interface
procedure GradVertical(Canvas: TCanvas; Rect: TRect; FromColor, ToColor: TColor);
Implemention
procedure TForm1.GradVertical(Canvas: TCanvas; Rect: TRect; FromColor, ToColor: TColor);
var
Y : Integer;
dr, dg, db : Extended;
C1, C2 : TColor;
r1, r2, g1, g2, b1, b2: Byte;
R, G, B : Byte;
cnt : Integer;
begin
C1 := FromColor;
r1 := GetRValue(C1);
g1 := GetGValue(C1);
b1 := GetBValue(C1);
C2 := ToColor;
r2 := GetRValue(C2);
g2 := GetGValue(C2);
b2 := GetBValue(C2);
dr := (r2 - r1) / Rect.Bottom - Rect.Top;
dg := (g2 - g1) / Rect.Bottom - Rect.Top;
db := (b2 - b1) / Rect.Bottom - Rect.Top;
cnt := 0;
for Y := Rect.Top to Rect.Bottom - 1 do
begin
R := r1 + Ceil(dr * cnt);
G := g1 + Ceil(dg * cnt);
B := b1 + Ceil(db * cnt);
Canvas.Pen.Color := RGB(R, G, B);
Canvas.MoveTo(Rect.Left, Y);
Canvas.LineTo(Rect.Right, Y);
Inc(cnt);
end;
end;
procedure TForm1.ButtonClick(Sender: TObject);
var
Rect: TRect;
begin
Rect := GetClientRect;
GradVertical(Self.Canvas, Rect, clBlack, clRed);
end;
No comments:
Post a Comment