# Four color circular gradient

This tutorial shows how to create four color circular gradients.

# Four color circular gradient

The RGB macro selects a red, green, blue (RGB) color based on the arguments supplied and the color capabilities of the output device. The intensity for each argument is in the range 0 through 255. If all three intensities are zero, the result is black. If all three intensities are 255, the result is white.

Following procedure create gradient at startup.

procedure TForm1.FormCreate(Sender: TObject);
Var
Max, Xo, Yo, Radius, C, R, H, W, L : Integer;
Angle, Step : Real;
begin
{ Get form size }
H:=Image1.Height;
W:=Image1.Width;

{ Fill area with form color }
Image1.Canvas.Pen.Color:=Form1.Color;
Image1.Canvas.Brush.Color:=Form1.Color;
Image1.Canvas.Rectangle(0,0,W,H);

Max:=360;
Image1.Canvas.Pen.Width:=5;

{ Set fill size }
L:=Max Div 4;

{ Set fill step size }
Step:=255/L;

{ Set circle coodinates }
Xo:=W Div 2;
Yo:=H Div 2;
Radius:=(H Div 2)-30;

C:=0;
Angle:=0;
For R:=0 To Max Do
Begin
{ Select color for gradient starting from RED
to YELLOW }

{ Change fill color }
If R<=L Then
Begin
C:=Round(R*Step);
{ Red -> Green }
Image1.Canvas.Pen.Color:=RGB(255-C,C,0)
End
Else If R<=2*L Then
Begin
C:=Round((R-L)*Step);
{ Green -> Blue }
Image1.Canvas.Pen.Color:=RGB(0,255-C,C)
End
Else If R<=3*L Then
Begin
C:=Round((R-2*L)*Step);
{ Blue -> Yellow }
Image1.Canvas.Pen.Color:=RGB(C,C,255-C);
End
Else If R<=4*L Then
Begin
C:=Round((R-3*L)*Step);
{ Yellow -> Red }
Image1.Canvas.Pen.Color:=RGB(255,255-C,0);
End;

{ Fill area by drawing lines }
Image1.Canvas.MoveTo(Xo,Yo);
Image1.Canvas.LineTo(Xo+Round(Radius*Sin(R*(Pi/180))),
Yo-Round(Radius*Cos(R*(Pi/180))));
End;
end;

# Download This Delphi Tutorials.

Download materials for this article (Delphi - Tutorials)

four-color-circular-gradient.zip
File size: 4 KB, File type: zip
Total downloads: 204, Upload date: February 10 - 2009