Az alábbi példaprogram bemutatja, hogy hogyan lehet egy színátmenetes Formot létrehozni. A példában a Form színe feketéből áttűnik a színválasztó párbeszédablakban (ColorDialogBox) megadott színbe. A színek manipulálására a GetRValue(), GetBValue(), GetGValue() és az RGB() Win32 API függvényeket, a Form megfestésére pedig a TCanvas.MoveTo() és a TCanvas.LineTo() eljárásokat használjuk. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; ColorDialog1: TColorDialog; procedure Button1Click(Sender: TObject);b procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } EndColor:TColor; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin {A végszín bekérése} ColorDialog1.Execute; EndColor := ColorDialog1.Color; {A Form Paint eseményének meghívása} Repaint; end; procedure TForm1.FormPaint(Sender: TObject); var x,GradientDistance,GradientWidth : Integer; tmpColor : TColor; NewRed,NewGreen,NewBlue : Byte; EndRed,EndGreen,EndBlue : Byte; begin {Ha nincs beállítva végszín, kilép.} if EndColor = clBlack then Exit; {A tmpcolor inicializálása} tmpColor := EndColor; {A színátmenet hossza} GradientDistance := Height; {A színátmenet szélessége} GradientWidth := Width; {A vörös, zöld és kék kezdőértékei} EndRed := GetRValue(EndColor); EndBlue := GetBValue(EndColor); EndGreen := GetGValue(EndColor); {Átmenet a kezdő és a végső színérték közt} for x := 1 to GradientDistance do begin {A szín vörös, zöld és kék összetevőinek beállítása az aktuális távolságnak a teljes távolsághoz viszonyított arányában} NewRed := (x*EndRed) div GradientDistance; NewBlue := (x*EndBlue) div GradientDistance; NewGreen := (x*EndGreen) div GradientDistance; {Az új szín megadása a megváltozott vörös, zöld kék színeknek megfelelően} tmpColor := RGB(NewRed,NewGreen,NewBlue); {Az új festőszín beállítása} Canvas.Pen.Color := tmpColor; {A vonalnak az új színnel való megrajzolása} Canvas.MoveTo(0,x); Canvas.LineTo(GradientWidth,x); end; end; procedure TForm1.FormCreate(Sender: TObject); begin {A végszín kezdeti értékének megadása} EndColor := clBlack; end; end.