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

Лабораторна робота №12

Тема: Створення програми з використанням мультимедіа.

Мета роботи: вивчити можливості мультимедіа в Delphi. Написати і налагодити програму побудови на екрані.

Розробка проекту «Графічний конструктор»

Завдання. Створити програму, за допомогою якої користувач зміг би із запропонованого набору фігур зібрати та розфарбувати машинку, повантажити на неї мишку та відправити її в дорогу. «Урочисту» подію старту відзначити святковим салютом

Аналіз проекту. Для створення графічного конструктора необхідно познайомитись із засобами Delphi, які забезпечують виведення анімованих стандартних зображень впродовж певного інтервалу часу, причому користувач повинен мати змогу спостерігати за ходом цього процесу.

Для розробки цього проекту скористаємось такими компонентами Delphi:

  • Animate (вкладка Win32 палітри компонентів) – анімація, що використовується для виведення стандартних відео кліпів ОС Windows та «німих» відеофайлів *.avi;

  • Timer (вкладка System палітри компонентів) – таймер. Використовується для відліку інтервалів реального часу;

  • ProgressBar (вкладка Win32 палітри компонентів) – індикатор процесу, за допомогою якого можна відображати перебіг виконання певного процесу.

Для збирання машинки основне поле форми відведемо під компонент Panel, з яким ви вже ознайомлені, але компонент Panel використовуватиметься для об'єднан­ня кількох компонентів.

На цьому компоненті будемо розміщувати деталі конструктора: різні види компонента Shape (вкладка Additional палітри компонентів) – фігу­ра, компонент Image та компонент Label. Для того, щоб ці компоненти були «прив'язані» до компонента Panel, необхідно спочатку розмістити на формі цей компонент, а потім з палітри компонентів розміщувати дочірні компоненти.

Для організації перетягування фігур скористаємось комбінацією об­робки подій: «кнопка миші натиснута», «кнопки миші утримується», «кноп­ка миші відпущена».

Як відомо, до складу ОС Windows входять типові діалогові вікна (вікна вибору: файла, шрифту, кольору, настройки принтера тощо). У цьому проекті ми використаємо засіб Delphi, який дає змогу організувати вик­лик стандартних вікон Windows (додати до проекту невізуальні компонен­ти вкладки Dialogs).

Хід роботи

Алгоритм розробки проекту

  1. Створити папку С:\Delphi\lab_12.

  2. Створити новий проект.

  3. Розмістити на формі компоненти Label1, Panell, BitBtnl. Встановити цим компонентам властивості за табл. 1.

Таблиця 1

Компонент

Вкладка вікна «Інспектор об’єктів» (Object Inspector)

Властивість (Properties)/ Подія (Events)

Значення властивості/ обробка події (тіло процедури обробки події)

Label1

Properties

AutoSize

False

WordWrap

True

Caption

Збери машинку. Повантаж мишку на машинку та натисни «Готово»

Panel1

Properties

Caption

Чисте поле

AutoSize

False

Ctl3D

False (відключення тривимірного зображення)

Color

clBtnFace (колір об’єкта збігається з кольором форми)

BitBtn1

Properties

Kind

blAll

Caption

Готово

Пояснення. Кнопка «Готово» запускатиме салют і відправлятиме миш­ку в дорогу.

4. Компоненту Раnel1 надати такого розміру, щоб він зайняв всю фор­му від компонента Label1 до кнопки BitBtnl. На панелі Panell розмістити геометричні фігури Shapel-Shape3 (три прямокутника: кузов, кабіна, вікно кабіни) та Shape4, Shape5 – два кола (колеса). Для встановлення виду фігури використати властивість Shape, для встановлення стилю та кольору зафарбовування використати властивості Brush.Color, Brush.Style, для встановлення кольору та типу лінії контуру використати властивості Pen.Color, Pen.Style. На компоненті Panell розмістити такі об'єкти, як на табл. 2.

Таблиця 2

Компонент

Вкладка вікна «Інспектор об’єктів» (Object Inspector)

Властивість (Properties)/ Подія (Events)

Значення властивості/ обробка події (тіло процедури обробки події)

Label2

Properties

Caption

Миші (напис для кузова)

Imagel

Properties

Picture

Відкрити графічний файл із зображенням миші

Зауваження. Якщо планується, що при конструюванні машинки одні об'єкти будуть накладатися на інші (наприклад, вікно кабіни на кабіну), то встановити порядок розташування об'єктів: активізувати об'єкт, виклика­ти правою кнопкою миші контекстне меню, вибрати компонент. Зробити нижнім (верхнім).

5. Для всіх компонентів, розміщених на панелі Panel1, запрограмува­ти перетягування об'єктів по панелі. Для цього створити для цих компо­нентів процедури опрацювання подій OnMouseDown (кнопку натиснуто), OnMouseMove (кнопка миші утримується натиснутою), OnMouseUp (кнопку відпущено):

procedure TForml.Label2MouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);

begin

flag:=False;

end;

procedure TForml.Label2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) ;

begin

xl:=x;yl:=y; flag:=True;

end;

procedure TForml.Label2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

begin

if flag then with TShape (sender) do begin Left:=Left+x-xl;Top:=Top+y-yl; end;

end;

Пояснення. Якщо під час виконання програми кнопка миші буде натиснута в той час, коли її курсор знаходиться в області компонента Label2, змінні х1 і х2 запам'ятають координати розміщення фігури, а прапорець flag отримає значення True, що означатиме «перетягу­вання почалось». Якщо кнопку миші не відпускати й рухатись, то пра­цюватиме процедура TForml.Label2MouseMove, в якій відбувати­меться перерахування координат об'єкта Label2 стосовно системи ко­ординат форми.

Після того, як кнопка миші буде відпущена, спрацює процедура TForml.Label2MouseUp, де прапорець flag отримає значення False – перетягування закінчилось.

6. Зберегти проект у палці C:\Delphi\lab_l2.

7. Запустити проект та перевірити правильність його виконання: пе­ретягуючи об'єкти на панелі – зібрати машинку та повантажити мишку на машинку. Кнопка «Готово» поки не працює.

8. Розмістити на формі об'єкт Animatel (праворуч або ліворуч від компонента Labell) – для відображення відеокліпу. Розмістити в будь-якому місці форми об'єкт Timerl – для відліку інтервалів часу. Таймер включається при присвоєнні значення True його властивості Enabled і виключається, коли виконується Timerl.Enabled:=False;

9. Поруч з кнопкою «Готово» розмістити об'єкт ProgressBarl – для відображення процесу анімації. Цей об'єкт використовується для відображення виконання тривалого процесу, який починається з мо­менту включення таймера. Його властивості Міn та Мах – значення діапазону зміни. Властивість Position містить поточне значення вели­чини.

10. Встановити об'єктам такі властивості (табл. 3).

Таблиця 3

Компонент

Вкладка вікна «Інспектор об’єктів» (Object Inspector)

Властивість (Properties)/ Подія (Events)

Значення властивості/ обробка події (тіло процедури обробки події)

Animate1

Properties

Active

False

AutoSise

True

Visible

False

Timer1

Properties

Interval

500

Enabled

False

ProgressBar1

Properties

Visible

False

Max

10

11. Для кнопки «Готово» створити процедуру обробки події OnClick:

Labell.Font.Color:=clblue;

Labell.Caption:='Щасливої дороги!';

Animate1.FileName:='bart.avi';

Animatel.Active:=True;

Animatel.visible:=True;

Timerl.Enabled:=True;

ProgressBar1.Visible:=True;

ProgressBarl.show;

12. Для таймера створити процедуру обробки події ОnТіmеr (для цьо­го у вікні Інспектор об'єктів на вкладці Events (Події) двічі клікнути у полі праворуч від події ОnТіmеr):

ProgressBarl.Position:=ProgressBarl.Position+1;

if ProgressBarl.Position>=ProgressBarl.max then

begin

Timerl.enabled:=False;

ProgressBarl.Position:=0;

ProgressBarl.hide;

Animatel.Stop;

end;

13. Зберегти проект у палці C:\Delphi\lab_l2.

14. Запустити проект та перевірити правильність його виконання.

Питання для самоконтролю:

1. Які компоненти надає Delphi в розпорядження програміста, що дозволяють розробляти мультимедійні програми?

2. Який компонент дозволяє відтворювати просту анімацію, кадри якої знаходяться в Avi-файлі?

3. Яка властивість зберігає ім'я Avi-файла, в якому знаходиться анімація, що відображається за допомогою компоненту?

4. Яка властивість задає номер кадру, з якого починається відображення анімації?

5. Яка властивість задає номер кадру, на якому закінчується відображення анімації?

6. Яка властивість задає кількість повторів відображення анімації?

7. Який компонент дозволяє відтворювати відеоролики, звук і супроводжувану звуком анімацію?

8. Яка властивість визначає компонент, на поверхні якого відтворюється відеоролик?

9. Яка властивість визначає видимі кнопки компоненту, а також дозволяє зробити невидимими деякі кнопки?

10. Яка властивість задає ознаку автоматичного відкриття відразу після запуску програми, файла відеоролика або звукового фрагмента?