Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_лаб_5.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
506 Кб
Скачать
☆

Хід роботи

1. Завантажте середовище візуального програмування Delphi.

2. Поставте на форму об’єкти Image1 та Timer1 (рис. 5.1).

Компонент image використовується для виведення фону, а компонент Timer - для організації затримки між циклами видалення і виведення на новому місці зображення.

Рис.5.1. Форма програми «Повітряний змій»

3. Створіть об’єкти бітових образів.

Встановіть для форми обробник події OnActivate.

Для зберігання бітових образів (картинок) фону і літака, а також копії області фону, що перекривається зображенням літака, використовуються об'єкти типу TBitMap, які створюються динамічно процедурою FormActivate. Ця ж процедура завантажує з файлів картинки фону (p1.bmp) і повітряного змія (zmij2.bmp), а також зберігає область фону, на яку перший раз накладатиметься картинка.

Оголосіть змінні типу TBіtMap (бітовий образ) в розділі оголошень змінних:

fon, zmij, Buf : TBitMap; // фон, змій, буфер

Для створення об'єктів - бітових образів використайте метод Create.

fon:= TBitmap.Create; // фон

zmij:= TBitmap.Create; // змій

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

4. Завантажте і виведіть фон (рис. 5.2.).

Завантажити в бітовий образ fon потрібну картинку можна за допомогою методу LoadFromFіle, указавши як параметр ім'я BMP-файлу, у якому перебуває потрібна ілюстрація (наприклад, 'F:\p1.bmp).

fon.LoadFromFile('F:\p1.bmp');

Рис.5.2. Результат завантаження фону в бітовий образ

Вивести вміст бітового образу (картинку) на поверхню форми або області виведення ілюстрації можна шляхом застосування методу Draw до відповідної властивості поверхні (canvas).

Form1.Image1.canvas.Draw(0,0,fon);

5. Забезпечте, щоб розміри форми та зображення співпадали.

form1.Height:=fon.Height;

form1.width:=fon.width;

6. Завантажте картинку, яка буде рухатися.

Для цього використайте метод LoadFromFіle.

zmij.LoadFromFile('F:\zmij2.bmp');

7. Зробіть прозорим фон картинки, яка буде рухатися.

Визначіть "прозорий" колір наступним чином

zmij.Transparent := True;

zmij.TransParentColor := zmij.canvas.pixels[1,1];

8. Створіть буфер для збереження копії області фону на яку накладається картинка, що рухається.

Для цього оголосіть змінні W, Н – ширина та висота картинки, яка рухатиметься і задайте їм відповідні значення:

W:= zmij.Width;

H:= zmij.Height;

Відповідно задайте ці розміри і для бітового образу, в якому зберігатиметься копія області фону на яку накладається картинка, що рухається.

Buf.Width:= W;

Buf.Height:=H;

Забезпечте відповідність палітр.

Buf.Palette:=fon.Palette;

Buf.Canvas.CopyMode:=cmSrcCopy;

9. Визначіть область буфера, яка використовуватиметься для відновлення фону.

Збереження копії фону виконується за допомогою методу CopyRect, який дозволяє виконати копіювання прямокутного фрагмента одного бітового образу в іншій. Об'єкт, до якого застосовується метод CopyRect, є приймачем копії бітового образу. Як параметри методу передаються координати і розмір області, куди повинно бути виконано копіювання, поверхню, звідки повинно бути виконано копіювання, а також положення і розмір копійованої області. Інформація про положення і розмір копійованої в буфер області фону, на яку буде накладене зображення повітряного змія і яка згодом повинна бути відновлена з буфера, знаходиться в структурі BackRеt типу TRect. Для заповнення цієї структури використовується функція Bounds.

Для цього оголосіть змінні:

BackRеt : TRect; // область фону, яка повинна бути відновлена з буфера

BufRet: TRect; // область буфера, яка використовується для відновлення фону.

За допомогою властивості Bounds визначіть область буфера, яка використовуватиметься для відновлення фону:

BufRуt:=Bounds(0,0,W,H);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]