Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №22.pdf
Скачиваний:
30
Добавлен:
16.03.2015
Размер:
1.63 Mб
Скачать

Лабораторные работы по информатике для специальности «Моделирование и исследование операций в организационно-технических системах»

InvalidateRect(Handle, nil, False); end;{TimerTimer}

procedure TfrmAirPlane.CalcNewCoord(var newX, newY: Integer); var dx, dy:Integer;

begin randomize; dx:=random(20); randomize; dy:=random(20);

if dx>10 then dx:=10-dx; if dy>10 then dy:=10-dy;

if newX+dx+Mask.Width<Width then newX:=newX+dx else newX:=Width-Mask.Width;

if newY+dy+Mask.Height<ClientHeight then newY:=newY+dy else newY:=ClientHeight-Mask.Height;

if newX<0 then newX:=0; if newY<0 then newY:=0;

end;{CalcNewCoord}

procedure TfrmAirPlane.FormDestroy(Sender: TObject); begin

//уничтожение созданных растров

Background.Free;

Mask.Free;

Sprite.Free; end;{FormDestroy} end.{UPlane}

Запустите программу. Обратите внимание, что изображение самолета при анимации не мерцает. Плавность движения спрайта будет зависеть лишь от частоты прорисовки спрайтов.

Использование компонента TImageList

Для хранения нескольких спрайтов одинаковых размеров удобно использовать компонент TImageList.

Этот компонент не имеет собственного холста, но может вывести изображение на любой предоставленный ему холст. Основной метод компонента для вывода изображений Draw имеет следующий синтаксис

procedure Draw(Canvas: TCanvas; X, Y, Index: Integer; Enabled: Boolean=True);

гдеCanvas – холст, на который выводится изображение; x, y – координаты для вывода изображения;

Enabled – если равно False, то выводится в серых полутонах (вид запрещенной кнопки)/

Значение свойства ImageType отвечает за то, как будет интерпретироваться изображение, как маска спрайта (itMask) или как изображение (itImage).

Обратите внимание, что для изображений помещенных в компонент TImageList не нужно сначала выводить маску спрайта, а затем сам спрайт. Достаточно указать «прозрачный» цвет при загрузке изображения в список (для bmp файлов, для ico файлов этого делать не нужно, т.к. информация о прозрачных областях хранится в самом файле) (рисунок 7).