Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
unit
aplane_;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons;
type
TForm1 = class
(TForm) Timer1: TTimer; Image1: TImage; procedure
FormActivate(Sender: TObject); procedure
Timer1Timer(Sender: TObject); procedure
FormClose(Sender: TObject; var
Action:
TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end
;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
Back, bitmap, Buf: TBitMap; // фон, картинка,
буфер
BackRct: TRect; // область фона, которая должна
быть
// восстановлена из буфера
BufRct: Trect; // область буфера, которая
используется для
// восстановления фона
x, y: integer; // текущее положение картинки
W, H: integer; // размеры картинки
procedure
TForm1.FormActivate(Sender: TObject); begin
// создать три объекта - битовых образа
Back := TBitmap.Create; // фон
bitmap := TBitmap.Create; // картинка
Buf := TBitmap.Create; // буфер
// загрузить и вывести фон
Back.LoadFromFile('factory.bmp');
Form1.Image1.canvas.Draw(0, 0, Back);
// загрузить картинку, которая будет двигаться
bitmap.LoadFromFile('aplane.bmp');
// определим "прозрачный" цвет
bitmap.Transparent := True;
bitmap.TransParentColor := bitmap.canvas.pixels[1, 1];
// создать буфер для сохранения копии области
фона,
// на которую накладывается картинка
W := bitmap.Width;
H := bitmap.Height;
Buf.Width := W;
Buf.Height := H;
Buf.Palette := Back.Palette; // Чтобы обеспечить
соответствие палитр !!
Buf.Canvas.CopyMode := cmSrcCopy;
// определим область буфера, которая будет
использоваться
// для восстановления фона
BufRct := Bounds(0, 0, W, H);
// начальное положение картинки
x := -W;
y := 20;
// определим сохраняемую область фона
BackRct := Bounds(x, y, W, H);
// и сохраним ее
Buf.Canvas.CopyRect(BufRct, Back.Canvas, BackRct);
end
;
// обработка сигнала таймера
procedure
TForm1.Timer1Timer(Sender: TObject); begin
// восстановлением фона (из буфера) удалим
рисунок
Form1.image1.canvas.Draw(x, y, Buf);
x := x + 2;
if
x > form1.Image1.Width then
x := -W;
// определим сохраняемую область фона
BackRct := Bounds(x, y, W, H);
// сохраним ее копию
Buf.Canvas.CopyRect(BufRct, Back.Canvas, BackRct);
// выведем рисунок
Form1.image1.canvas.Draw(x, y, bitmap);
end
;
// завершение работы программы
procedure
TForm1.FormClose(Sender: TObject; var
Action:
TCloseAction);
begin
// освободим память, выделенную
// для хранения битовых образов
Back.Free;
bitmap.Free;
Buf.Free;
end
;
end
.