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

Котрольні питання

  1. Яке призначення функції FileExists та її параметри?

  2. Яке призначення функції FileOpen та її параметри?

  3. Яке призначення функції FileClose та її параметри?

  4. Яке призначення функції FileSeek та її параметри?

  5. Яке призначення функції FileCreate та її параметри?

Лабораторна робота №6 Тема: Розробка мультимедійних програм

Мета: Навчитисть розробляти програми з використанням компонентів Animate та MediaPlayer

Хід роботи

1. Розмістити на формі компоненти Label, Edit, OpenDialog, Animate (закладка Win32), дві RadioButton, та чотири компоненти Button.

рис.1 Форма програми перегляду анімації

  1. Написати обробник OnCreate, таким чином, що після запуску програми у формі буде виведений перший кадр анімації, яка знаходиться в каталозі проекту. Якщо жодного файлу з розширенням avi в каталозі проекту немає, то поле компоненту Animate залишиться порожнім.

  2. Написати обробник кнопки вибрати, яка за допомогою OpenDialog дозволяє вибрати анімаційний файл.

  3. Написати обробник кнопки Пуск, яка активує відображення анімації.

  4. Написати обробник RadioButton2 що зупиняє та зберігає у змінну перший кадр.

  5. Написати обробники кнопок Наступний та Попередній для покрокового переміщення по кадрах.

Приклад 1. Використання компоненти Animate

// обробка події OnCreate

void __fastcall TForm1::FormCreate(TObject *Sender)

{

TSearchRec sr; // містить інформацію про файл, знайдений функцією FindFirst

// знайдемо Avi-файл в поточному каталозі

if (FindFirst("*.avi",faAnyFile,sr)==0)

{

Edit1->Text = sr.Name;

/* якщо анімація містить звук, то при виконанні наступного оператора відбудеться помилка, компонент Animate забезпечує відтворення тільки простої не супроводжуваної звуком анімації */

try

{

Animate1->FileName = sr.Name;

}

catch (Exception &e)

{

return;

}

RadioButton1->Enabled = true;

RadioButton2->Enabled = true;

Button1->Enabled = true;

}}

// натиснення на кнопці Вибрати

void __fastcall TForm1::Button4Click(TObject *Sender)

{

OpenDialog1->InitialDir= ""; //відкрити каталог, з якого запущена програма

OpenDialog1->FileName = "*.avi"; //вивести список Avi-файлів

if ( OpenDialog1->Execute ( ))

{

// користувач вибрав файл і натиснув кнопку Відкрити. Компонент Animate може відображати тільки просту, не супроводжувану звуком анімацію. Тому при виконанні наступної інструкції можлива помилка

try

{

Animate1->FileName=OpenDialog1-> FileName;

} catch (Exception &e)

{

Edit1->Text = "";

// зробимо недоступними кнопки управління

RadioButton1->Enabled = false;

RadioButton2->Enabled = false;

Button1->Enabled = false;

Button2->Enabled = false;

Button3->Enabled = false;

// повідомлення про помилку

AnsiString msg= "Помилка відкриття файлу" +OpenDialog1->FileName+

"\n можливо анімація супроводиться звуком.";

ShowMessage(msg);

return;

}

Edit1->Text = OpenDialog1->FileName; // відобразити ім'я файлу

RadioButton1->Checked = true;// режим перегляду —неперервно

Button1->Enabled = true; /// кнопка Пуск активна

Button2->Enabled = false; // кнопка Попередній кадр неактивна

Button3->Enabled = false; // кнопка Наступний кадр неактивна

RadioButton1->Enabled = true;

RadioButton2->Enabled = true;

}}

// натиснення на кнопці Пуск/Стоп

void __fastcall TForm1::Button1Click(TObject *Sender)

{

if (Animate1->Active)

{

// анімація відображається, натискання на кнопці Стоп

Animate1->Active = false;

Button1->Caption = "Пуск" ;

RadioButton2->Enabled = true;

}

else // натискання на кнопці Пуск

{

// активізувати відображення анімації

Animate1->StartFrame = 1; //з першого кадру

Animate1->StopFrame=Animate1-> FrameCount; // по останній кадр

Animate1->Active = true;

Button1->Caption = "Стоп";

RadioButton2->Enabled = false;

}}

//натиснення на кнопці Наступний кадр

void _fastcall TForml::Button2Click(TObject *Sender)

{

CFrame++;

// відобразити кадр

Animatel->StartFrame = CFrame;

Animatel->StopFrame = CFrame;

Animatel->Active = true;

if (CFrame > 1)

Button3->Enabled = true;

if (CFrame == Animatel->FrameCount) // відобразили останній кадр

Button2->Enabled = false; // кнопка Наступний кадр неактивна

}

//вибір режиму перегляду по кадрах

void __fastcall TForm1::RadioButton2Click(TObject *Sender)

{

Button1->Enabled = false; // кнопка Пуськ/Стоп неактивна

Button2->Enabled = true; // кнопка Наступний кадр доступна

Button3->Enabled= false; //кнопка Попередній кадр неактивна відобразити перший кадр

Animate1->StartFrame =1;

Animate1->StopFrame = 1;

Animate1->Active = true;

CFrame= 1; // запам'ятаємо номер відображеного кадру

}

// клацання на кнопці Попередній кадр

void __fastcall TForm1::Button3Click(TObject *Sender)

{

if (CFrame == Animatel->FrameCount) // останній кадр

Button2->Enabled = true;

CFrame--;

// відобразити кадр

Animate1->StartFrame = CFrame;

Animate1->StopFrame = CFrame;

Animate1->Active = true;

if (CFrame == 1)

Button3->Enabled = false; // кнопка Наступний кадр неактивна

}

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