Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ЗАДАНИЕ. Создайте приложение мультипликацию, в котором на фоне снежных гор летит самолет





Создайте приложение мультипликацию, в котором на фоне снежных гор летит самолет. Рисунки фона и самолета можно сделать самостоятельно, (рис. 28).

 

 

рис. 28

 

Создайте форму, для свойства Caption которой задайте значение «Полет самолета». Поместите на форму компонент Timer из палитры System и компонент Image из палитры Additional. Задайте для свойства Image1.Align значение alClient. Сохраните файл под именем airplane, файл модуля – под именем main в папке «Летящий самолет».

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

 

Back, bitmap, Buf: Tbitmap; {фон, картинка, буфер}

BackRct, bitmapRct, BufRct: Trect; {область фона, картинки, буфера}

x, y: integer; {координаты левого верхнего угла картинки}

W, H: integer; {размеры картинки (ширина, высота)}

Для запуска анимации создайте обработчик события OnActivate, наступающего, когда форма получает или теряет фокус, например, при щелчке по ней мышью. Чтобы создать обработчик события, выберите в окне Инспектора объектов объект Form1 и на странице Events произведите двойной щелчок на пустом поле списка в событии OnActivate. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForm1.FormActivate (Sender. TObject);

Отредактируйте текст этой процедуры следующим образом:

Procedure TForm1.FormActivate (Sender: TObject);

Begin

Back: =TBitmap.Create; {фон}

Bitmap: = TBitmap.Create; {картинка}

Buf: = TBitmap.Create; {буфер}

{загрузить и вывести фон из файла Backgraund.bmp}

Back.LoadFromFile (‘Backgraund.bmp’);

Form1.Image1Canvas.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: =cmScrCopy;

BufRct: =Bounds (0, 0, W, H);

x: =-W;

y: =20;

BackRct: =Bounds (x, y, W, H); {обеспечить сохраняемую область фона}

Buf. Canvas. CopyRect (BufRct, Back. Canvas, BackRct); {сохранить ее}

end;

Для получения эффекта мультипликации создайте процедуру обработчика события OnTimer, для чего выберите в окне Инспектора объектов объект Timer1 и на странице Events произведите двойной щелчок на пустом поле списка в событии Timer1Timer. Отредактируйте тело процедуры обработчика события следующим образом:

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;

 

Для освобождения памяти от переменных, в которых хранились значения фона, рисунка самолета и буфера с фрагментом фона, создайте процедуру обработчика события закрытия окна приложения. Для этого выберите в окне Инспектора объектов объект Form1 и на странице Events произвести двойной щелчок на пустом поле списка в событии OnClose. Вставьте в тело процедуры обработчика события вызов метода Free для освобождения памяти, динамически выделенной под объекты Back, bitmap и Buf.

 

Procedure TForm1. FormClose (Sender: TObject; var Action: TCloseAction);

Begin

Back. Free; {освободить память}

bitmap. Free;

Buf. Free;

End;

Сохраните текст приложения, откомпилируйте его и поверьте его работу. Убедитесь, что в окне приложения на фоне выбранного рисунка осуществляется перемещение изображения самолета, как показано ниже на рисунке 29.

 

рис. 29

 

 







Дата добавления: 2014-11-10; просмотров: 686. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

ПУНКЦИЯ И КАТЕТЕРИЗАЦИЯ ПОДКЛЮЧИЧНОЙ ВЕНЫ   Пункцию и катетеризацию подключичной вены обычно производит хирург или анестезиолог, иногда — специально обученный терапевт...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия