unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; Shape1: TShape; procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Timer1Timer(Sender: TObject); procedure FormClick(Sender: TObject); procedure FormDblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var x: integer = 2; y: integer =2; procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Timer1.Enabled :=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Shape1.Left :=Shape1.Left+x; if Shape1.Left >ClientWidth -Shape1.Width - 1 then x :=-2; if Shape1.Left <1 then x :=2; Shape1.Top :=Shape1.Top +y; if Shape1.Top >ClientHeight -Shape1.Height -1 then y :=-2; if Shape1.Top <1 then y :=2; end; procedure TForm1.FormClick(Sender: TObject); begin Timer1.Enabled :=false; end; procedure TForm1.FormDblClick(Sender: TObject); begin Shape1.Left :=0; end; end.
Для показа анимации подготовил 8 картинок *.bmp (по 11Кб), показывающих фазы вращения.
В программе объявил глобальный массив
var KK: array [1..8] of TBitMap; ii: integer = 1;
При создании формы: создал эти объекты KK и загрузил в них картинки из файлов.
Для показа анимации поставил на форму объект Im1: TImage; и таймер.
Обработчик T1Timer через заданный интервал времени присваивает:
Im1.Picture.Bitmap:= KK[ii];
Это выглядит так:
Скачать RAR-архив исходников + .exe(170 Кб)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Im1: TImage; T1: TTimer; btnMinus: TButton; btnPlus: TButton; L1: TLabel; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure FormClick(Sender: TObject); procedure T1Timer(Sender: TObject); procedure btnMinusClick(Sender: TObject); procedure btnPlusClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var KK: array [1..8] of TBitMap; ii: integer = 1; procedure TForm1.FormCreate(Sender: TObject); var ii: integer; begin for ii:=1 to 8 do KK[ii]:= TBitMap.Create; KK[1].LoadFromFile('ris1.bmp'); KK[2].LoadFromFile('ris3.bmp'); KK[3].LoadFromFile('ris5.bmp'); KK[4].LoadFromFile('ris7.bmp'); KK[5].LoadFromFile('ris9.bmp'); KK[6].LoadFromFile('ris11.bmp'); KK[7].LoadFromFile('ris13.bmp'); KK[8].LoadFromFile('ris15.bmp'); end; procedure TForm1.FormClick(Sender: TObject); begin T1.Enabled := not T1.Enabled; end; procedure TForm1.T1Timer(Sender: TObject); begin Im1.Picture.Bitmap:= KK[ii]; ii:= ii + 1; if ii > 8 then ii := 1; end; procedure TForm1.btnMinusClick(Sender: TObject); begin T1.Interval := T1.Interval - 5; L1.Caption:= IntToStr(T1.Interval); end; procedure TForm1.btnPlusClick(Sender: TObject); begin T1.Interval := T1.Interval + 5; L1.Caption:= IntToStr(T1.Interval); end; end.