Изображение перемещающегося объекта и фоновый рисунок (рис. 1.35) должны загружаться из файла.

Рис. 1.34. Летящий над городом самолет

Рис. 1.35. Объект и фоновый рисунок

unit aplane_;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TForml = class (TForm)
Timerl: TTimer;
Image1: TImage;
procedure TimerlTimer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
f Public declarations }
end;var
Forml: TForml;implementation{$R +.DFM}
var
Back, Picture: TBitMap; // фон и картинка
BackRct : TRect; // положение и размер области фона,
// которая должна быть восстановлена
х,у:integer; // текущее положение картинки
W,H: integer; // размеры картинки
procedure TForml.FormCreate(Sender: TObject);
begin
{ Свойству AutoSize обязательно надо
присвоить значение False. Это можно
сделать во время создания формы.
I
Imagel.AutoSize := False;
// создать два объекта — битовых образа
Back := TBitmap.Create; // фон
Picture := TBitmap.Create; // картинка // загрузить и вывести фон
Back.LoadFromFile('factory.bmp');
Imagel.Width := Back:Width;
Imagel.Height : = Back.Height;
Imagel.Canvas.Draw(0,0,Back); // загрузить картинку, которая будет двигаться
Picture.LoadFromFile('aplane.bmp');
W := Picture.Width;
H := Picture.Height; // определим "прозрачный" цвет
Picture.Transparent := True;
// прозрачный цвет картинки определяет
// левый верхний пиксел картинки
Picture.TransParentColor := Picture.Canvas.Pixels[1,1]; // начальное положение картинкм
х := -W;
у := 20; // определим сохраняемую область фона
BackRct:=Bounds(х,у,W,Н);end;// обработка сигнала таймера
procedure TForml.TimerlTimer(Sender: TObj ect);
begin
// восстановлением фона удалим рисунок
Imagel.Canvas.CopyRect(BackRct,Back.Canvas, BackRct); x:=x+2;
if x > Imagel.Width then x:=-W; // определим сохраняемую область фона
BackRct:=Bounds(x,y,W,H); // выведем рисунок
Imagel.Canvas.Draw(x,у,Picture);
end;
// завершение работы программы
procedure TForml.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
// освободим память, выделенную
// для хранения битовых образов
Back.Free;
Picture.Free;
end;
end.