
- •Лабораторна робота № 5 реалізація ефекту переміщення картинки («Повітряний змій»)
- •Хід роботи
- •1. Завантажте середовище візуального програмування Delphi.
- •2. Поставте на форму об’єкти Image1 та Timer1 (рис. 5.1).
- •3. Створіть об’єкти бітових образів.
- •4. Завантажте і виведіть фон (рис. 5.2.).
- •9. Визначіть область буфера, яка використовуватиметься для відновлення фону.
- •10. Задайте початкове положення картинки, яка рухатиметься.
- •11. Визначіть область фону, що зберігається.
- •13. Відновіть фон (з буфера).
- •14. Забезпечте рух картинки по фону.
- •Контрольні запитання
- •Яким чином реалізовується ефект переміщення картинки?
- •Для чого призначені бітові образи?
10. Задайте початкове положення картинки, яка рухатиметься.
Для цього оголосіть змінні: х, у.
Задайте їм початкові значення.
Наприклад, х := -W; у := 20.
Слід звернути увагу на те, що початкове значення змінної х, яка визначає положення лівої верхньої точки бітового образу рухомої картинки, — від’ємне число, рівне ширині бітового образу картинки. Тому на початку роботи програми зображення повітряного змія не з'являється, картинка вимальовується за межею видимої області.
Картинка рухатиметься зліва направо. Початково її не буде видно (ефект випливання зліва).
Змінюючи значення х та у можна добитися зміни положення і напрямку руху картинки.
11. Визначіть область фону, що зберігається.
BackRct:=Bounds(x,y,W,H);
Збережіть цю область.
Buf.Canvas.CopyRect(BufRet,fon.Canvas,BackRct).
12. Обробка сигналу таймера.
Здійснюється процедурою TForm1.Timer1Timer(Sender: TObject).
13. Відновіть фон (з буфера).
Form1.image1.canvas.Draw(x,у,Buf);
14. Забезпечте рух картинки по фону.
Для цього необхідно змінювати значення координат положення картинки, яка рухається:
x:=x+2;
З кожною подією OnTimer значення координати х збільшується, і на екрані з'являється та частина бітового образу, координати якої більше нуля. Таким чином, у спостерігача створюється враження, що повітряний змій вилітає із-за лівої границі вікна.
Якщо значення координати х перевищить ширину форми, повертаємо картинку в початкове положення (створення ефекту безперервності руху картинку по фону):
if x>fоrm1.Image1.Width then x:=-W;
15. Визначіть область фону, що зберігається.
BackRct:=Bounds(x,у,W,H);
Збережть її копію
Buf.Canvas.CopyRect(BufRet,fon.Canvas,BackRеt);
16. Виведіть малюнок (рис. 5.3).
Form1.image1.canvas.Draw(x,y,zmij);
Рис. 5.3. Реалізація ефекту переміщення повітряного змія
17. Обробка подій при завершенні роботи програми.
Здійснюється процедурою TForm1.FormClose(Sender: TObject; var Action: TCloseAction).
Звільніть пам'ять, виділену для зберігання бітових образів:
fon.Free;
zmij.Free;
Buf.Free;
17. Забезпечте можливість зміни швидкості переміщення картинки.
Для цього використайте властивість таймера Interval.
18. Забезпечте ефект відбивання картинки від країв.
а) Досягнувши протилежної сторони рухома картинка повертається назад (зліва направо, тоді справа наліво, або знизу вверх, тоді зверху вниз).
б) Досягнувши межі форми змінює напрямок руху на 45 градусів до сусідньої межі форми (наприклад, ліва межа, нижня межа, права межа, верхня межа, знову ліва межа і т.д. ).
19. Створіть ехе-файл програми.
20. 3акрийте Delphi, запустіть створену програму.
Запустіть ехе-файл з іменем проекту зі своєї власної папки.
Контрольні запитання
Яким чином реалізовується ефект переміщення картинки?
Для чого призначені бітові образи?
За допомогою якого об’єкта можна вивести ілюстрацію, що перебуває у файлі?
Завдяки якій властивості зображення виводиться на поверхню об’єкта?
Які властивості має Canvas?
Які методи має Canvas?
Що таке бітовий образ?
Які властивості мають об’єкти Tbitmap?
Як завантажити в бітовий образ потрібну картинку?
Як вивести вміст бітового образу (картинку) на поверхню форми або області виведення ілюстрації?
Як створити ефекту прозорого фону?
Для чого призначений компонент Tіmer?
Які властивості має компонент Tіmer?
Яка подія генерує компонент Tіmer?