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.