vada » 23.05.2012 15:04:33
Вот так работает.
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Image1: TImage;
procedure FormActivate(Sender: TObject);
procedure Image1Paint(Sender: TObject);
private
{ private declarations }
FColorStart:TColor;
FColorStop:TColor;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Image1Paint(Sender: TObject);
var
h,i:integer;
r1,g1,b1,r2,g2,b2:integer;
dr,dg,db: Double;
begin
If Visible=true then
begin
r1:=Red(ColorToRGB(FColorStart));
g1:=Green(ColorToRGB(FColorStart));
b1:=Blue(ColorToRGB(FColorStart));
r2:=Red(ColorToRGB(FColorStop));
g2:=Green(ColorToRGB(FColorStop));
b2:=Blue(ColorToRGB(FColorStop));
h:=Image1.Height-1;
with Image1.Canvas do
begin
Lock;
Pen.Style:=psSolid;
dr := (r2-r1) / h;
dg := (g2-g1) / h;
db := (b2-b1) / h;
for i:=0 to h do
begin
Pen.Color:=RGBToColor(r2-Round(dr*i),g2-Round(dg*i),b2-Round(db*i));
MoveTo(0,i);
LineTo(Width-1,i);
end;
Unlock;
end;
end;
inherited Paint;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
FColorStart := RGBToColor(32, 32, 32);
FColorStop := RGBToColor(250, 250, 250);
Image1Paint(Sender);
end;
end.
У Вас проблема в
(r1-r2) div h и в
(g1-g2) div h и в
(b1-b2) div h. Тут легко ноль получается. Ну и дальше ерунда всякая уже.
У вас нет необходимых прав для просмотра вложений в этом сообщении.