unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
// TPanelÀÇ Canvas ÇÁ·ÎÆÛƼ´Â protected ÀÔ´Ï´Ù
// ¾Æ·¡´Â ÀÌ·± ÇÁ·ÎÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï expose ½ÃŰ´Â ¹æ¹ýÀÔ´Ï´Ù
TExposedPanel = class(TCustomPanel);
type
TGradientMode = (gmVertical, gmHorizontal);
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure GradientPaint(Canvas: TCanvas; X, Y: Integer; GradientMode: TGradientMode);
var
Row, Ht: Word ;
begin
if GradientMode = gmVertical then // ¼öÁ÷¹æÇâ Gradient
begin
Ht := (Y + 255) div 256;
for Row := 0 to 255 do
with Canvas do
begin
Brush.Color := RGB(0, 0, Row); // Blue ¿¡ ´ëÇÑ Gradient
FillRect(Rect(0, Row * Ht, X, (Row + 1) * Ht));
end;
end
else if GradientMode = gmHorizontal then // ¼öÆò¹æÇâ Gradient
begin
Ht := (X + 255) div 256 ;
for Row := 0 to 255 do
with Canvas do
begin
Brush.Color := RGB(Row, 0, 0); // Red ¿¡ ´ëÇÑ Gradient
FillRect(Rect(Row * Ht, 0, (Row + 1) * Ht, Y));
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Image1Àº ¼öÁ÷¹æÇâÀ¸·Î Gradient
GradientPaint(Image1.Canvas, Image1.Width, Image1.Height, gmVertical);
// Panel1Àº ¼öÆò¹æÇâÀ¸·Î Gradient
// TExposedPanel ´Â type ¼±¾ð ºÎºÐÀ» º¸¼¼¿ä
GradientPaint(TExposedPanel(Panel1).Canvas, Panel1.Width, Panel1.Height, gmHorizontal);
end;
end. |
|