unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, math, StdCtrls, ExtCtrls, XPMan; type TForm1 = class(TForm) Timer1: TTimer; Timer2: TTimer; Button1: TButton; Button2: TButton; Button3: TButton; XPManifest1: TXPManifest; procedure Timer2Timer(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; x:integer=50; y:integer=200; h:integer=50; w:integer=20; kx:real=1.0; ky:real=1.0; x2,y2,xx,yy,R:integer; A:real; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Enabled:=false; Timer2.Enabled:=false; Timer1.Interval:=50; Timer2.Interval:=50; Form1.Color:=clwhite; end; procedure TForm1.Button1Click(Sender: TObject); begin close end; procedure TForm1.FormClick(Sender: TObject); begin x:=50; y:=200; h:=50; w:=20; kx:=1.0; ky:=1.0; canvas.FillRect(canvas.ClipRect); canvas.Ellipse(x-w, y-h, x+w, y+h); Timer1.Enabled:=false; Timer2.Enabled:=false; canvas.Refresh; end; procedure TForm1.Timer1Timer(Sender: TObject); var w2,h2:integer; begin w2:=round(kx*w); h2:=round(ky*h); canvas.Pen.Color:=clwhite; canvas.Ellipse(x-w2, y-h2, x+w2, y+h2); canvas.Pen.Color:=clblack; inc(x); inc(y); kx:=kx*0.99; ky:=ky*0.99; w2:=round(kx*w); h2:=round(ky*h); canvas.Ellipse(x-w2, y-h2, x+w2, y+h2); end; procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled:=true; end; procedure TForm1.Button3Click(Sender: TObject); var t1, t2 :integer; begin canvas.FillRect(canvas.ClipRect); xx:=100; yy:=10; canvas.MoveTo(xx,yy); canvas.LineTo(200,140); x2:=xx+(200-xx) div 2; y2:=yy+(140-yy) div 2; R:=round(sqrt(sqr(x2-xx)+sqr(y2-yy))); A:=arccos((200-xx)/2/r); Timer2.Enabled:=true; end; procedure TForm1.Timer2Timer(Sender: TObject); var t1, t2 :integer; begin canvas.Pen.Color:=clwhite; t1:=round(r*cos(a)); t2:=round(r*sin(a)); canvas.MoveTo(x2-t1,y2-t2); canvas.LineTo(x2+t1,y2+t2); inc(x2); a:=a+0.1; t1:=round(r*cos(a)); t2:=round(r*sin(a)); canvas.Pen.Color:=clblack; canvas.MoveTo(x2-t1,y2-t2); canvas.LineTo(x2+t1,y2+t2); end; end.