12401

ГРАФІЧНІ АНИМАЦІЇ КОМПОНЕНТОЮ Animate

Лабораторная работа

Информатика, кибернетика и программирование

ЛАБОРАТОРНА РОБОТА ГРАФІЧНІ АНИМАЦІЇ КОМПОНЕНТОЮ Animate Ціль лабораторної роботи складається з вивчення: структури і призначення елементів інтегрованого середовища С Buіlder для розробки прикладних програм С з відеороликами та мультіпликаціями на основі компоне

Украинкский

2013-04-27

147 KB

1 чел.

ЛАБОРАТОРНА РОБОТА № _6___

ГРАФІЧНІ АНИМАЦІЇ КОМПОНЕНТОЮ Animate

Ціль лабораторної роботи складається з вивчення: структури і призначення елементів інтегрованого середовища С++ Buіlder для розробки прикладних програм С++ з відеороликами та мультіпликаціями на основі компоненти «Animate».

1. Загальні зведення до компоненти «Animate» з

програмувального середовища C++ Buіlder

Компонента Animate забезпечує просту без звуку анімацію і значок якої знаходиться на закладці Win32. Додається на форму прикладної програми стандартним діями у VCL та формі. Після встановлення компоненти Animate на форму потрібно виконати налаштування властивостей – задати відповідні значення. Список властивостей компоненти Animate наводиться в таблиці № 1.

Таблиця № 1.

Назва властивості

Опис властивості

Name

Ім’я компоненти використовується для доступу к властивостям та для управління роботою.

FileName

Ім’я AVI-файлу, в якому знаходиться анімація і відображається компонентою.

FrameWidth

Ширина кадрів анімації.

FrameHeight

Висота кадрів анімації.

FrameCount

Кількість кадрів анімації.

AutoSize

Признак для автоматичного встановлення відповідного розміру компоненти з розмірами кадрів.

Center

Признак центрування кадрів у полі компоненти. Якщо значення властивості завдано true  і розмір компоненти більше розміру кадрів (AutoSize =false), кадри анімації розташовуються у центрі поля компоненти.

StartFrame

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

StopFrame

Номер кадру, на якому зупиняється анімація.

Active

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

Color

Цвет фона компоненти, на якому відображається анімація.

Transparent

Режим використання «прозорого» цвета при відображенні анімації.

Repetitions

Кількість повторів і анімації.

CommonAVI

Налаштовується стандартна Windows.

Компонента Animate забезпечує показ анімації на формі програми з файлів формату .avi  (Audio Video Interleaved) без звукового запису. Файли формату .avi є послідовностями кадрів зображень у вигляді побітової матриці. Для показу анімації у компоненти Animate властивість можна налаштувати:

- на значення FileName для вибору відповідного файлу .avi для анімації методом Play;

- на значення CommonAVI для анімації стандартних кліпів передбачених у Windows , встановленому на комп’ютері.   

Властивість CommonAVI  має тип TCommonAVI  і визначено у вигляді значень наступного об’єднання:

                             enum TCommonAVI { aviNone, aviFindFolder,

                              aviFindFile, aviFindeComputer,

                        aviCopyFiles, aviCopyFile,

                                   aviRecycleFile, aviEmptyRecycle,

      aviDeleteFile }.

У компоненти  Animate передбачені обробки в програмі таких подій: OnClose, OnOpen, OnStart та OnStop, яки генерують у відповідні моменти закриття і відкриття компоненти та початок і закінчення анімації на формі.

 

2. Постановка задачі до виконання лабораторної роботи

При виконанні лабораторної роботи потрібно виконати дві таки задачи.

ЗАДАЧА № А.  Необхідно створити програму С++ для роботи у Wіndows, в який у вікні форми буде виконуватись анімація рисунків компонентою Animate при властивості FileName після натискання кнопки   "ЗАПУСК". Програма С++ повинна виконувати безперевну анімацію та по кадрову анімацію до завданого фалу, який обирається у діалозі з каталогом файлів при натисканні кнопки «ОБРАТИ».

ЗАДАЧА № Б.  Необхідно створити програму С++ для роботи у Wіndows, в який на формі повинні виконуватись стандартні кліпи компонентою Animate при властивості CommonAVI .

3. Послідовності дій і команд для програмування

задач з лабораторної роботи

3.1 ЗАДАЧА № А.  

Крок 1.  Активізуємо проект файлів для нової програми С++ та виконайте команду для зберігання їх на диску в задану папку (каталог):

  •  Виконайте команду Fіle/New Applіcatіon, щоб з'явилася нова чиста форма Form1;
  •  Перейдіть у вікно інспектора об'єкта і у властивості Captіon задайте назву лабораторної роботи " Анімація кадрів з рисунками ,  щоб на заголовку вікна форми програми С++ замість назви Form1 з'явився напис "Анімація кадрів з рисунками";
  •  Збережить новий проект файлів разом з порожньою формою і змінамі в заголовку вікна. Це автоматично активізує новий проект файлів і C++ Buіlder запам'ятає шлях для швидкого збереження змін у файлах, розробляємої програми. Для збереження файлів проекту відрийте на диску таки папки D:\LA_NN\LAB-A_Animate-AVI, де NN - номер навчальної групи;
  •  Далі у меню Fіle виберіть команду Save Project As та при появі запиту на збереження змінюємо назву файлу Unіt1 на файл U_Animate-AVI.срр, а пропонуєму назву проекту Project1.bpr змінюємо на P_ Animate-AVI.bpr.

Крок 2.  Далі потрібно скомпонувати форму прикладної програми з елементами, показаними на рис. 1.

 

Рис. 1. Форма програми для виконання анімації з обраного файлу.

Крок 3. Після закінчення розроби по рис. 1 форми програми потрібно у вікні редактора текстів сформувати наступний лістинг команд для обробок подій при виконанні анімації AVI-файлу.

//------------------------------- U_Animate_avi.срр --------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "U_Animate_avi.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int CFrame = 0;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

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

// пошук AVI-файлу в активному каталозі

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

       {Edit1->Text = sr.Name;

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

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 = "D:\00new\filecopy.avi\";

// вивід списку з AVI-файлами

OpenDialog1->FileName = "*.avi";

if( OpenDialog1->Execute())

// обрано файл і натиснута кнопка "Відкрити"

try

{

 Animate1->FileName = OpenDialog1->FileName;

 }

       catch(Exception &e)

       {Edit1->Text - "";

 // блокування кнопок керування при avi-файлу зі звуком

 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 = true; // кнопка "Попередній кадр" недоступна

  Button3->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 TForm1::RadioButton1Click(TObject *Sender)

{

Button1->Enabled = true; //кнопка "ПУСК/СТОП" доступна

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

 Button2->Enabled = false;

Button3->Enabled = false;

 Animate1->Active = 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::Button2Click(TObject *Sender)

{

CFrame = CFrame + 1;

//відображення кадру

Animate1->StartFrame = CFrame;

Animate1->StopFrame = CFrame;

Animate1->Active = true;

if(CFrame > 1)

Button3->Enabled = true;

if(CFrame == Animate1->FrameCount) // відображено останній кадр

Button2->Enabled =false;

}

//---------------------------------------------------------------------------

//щелчок на кнопці "Попередній кадр"--------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

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

Button2->Enabled = true;

CFrame--;

//показ кадру

Animate1->StartFrame = CFrame;

Animate1->StopFrame = CFrame;

Animate1->Active = true;

if(CFrame == 1)

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

}

//---------------------------------------------------------------------------

//------------------------------- U_Animate_avi.h --------------------------------------

//---------------------------------------------------------------------------

#ifndef U_Animate_aviH

#define U_Animate_aviH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ComCtrls.hpp>

#include <Dialogs.hpp>

#include <ExtCtrls.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

       TRadioButton *RadioButton1;

       TRadioButton *RadioButton2;

       TButton *Button1;

       TButton *Button2;

       TButton *Button3;

       TEdit *Edit1;

       TButton *Button4;

       TAnimate *Animate1;

       TOpenDialog *OpenDialog1;

       TLabel *Label1;

       TLabel *Label2;

       void __fastcall FormCreate(TObject *Sender);

       void __fastcall Button4Click(TObject *Sender);

       void __fastcall Button1Click(TObject *Sender);

       void __fastcall RadioButton1Click(TObject *Sender);

       void __fastcall RadioButton2Click(TObject *Sender);

       void __fastcall Button2Click(TObject *Sender);

       void __fastcall Button3Click(TObject *Sender);

       

private: // User declarations

public:  // User declarations

       __fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

//------------------------------- P_Animate_avi.cpp --------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("U_Animate_avi.cpp", Form1);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

       try

       {

                Application->Initialize();

                Application->CreateForm(__classid(TForm1), &Form1);

                Application->Run();

       }

       catch (Exception &exception)

       {

                Application->ShowException(&exception);

       }

       catch (...)

       {

                try

                {

                        throw Exception("");

                }

                catch (Exception &exception)

                {

                        Application->ShowException(&exception);

                }

       }

       return 0;

}

//---------------------------------------------------------------------------

Крок 4.  Для кнопки RadioButton1 необхідно задати у властивості Checked значення true , щоб на формі з’явився значок чорної крапки.

Крок 5.  Виконуємо програми С++ з різними файлами анімації та при різних налаштуваннях з таблиці № 1 властивостей компоненти Animate. 

3.2 ЗАДАЧА № Б.

 Крок 1.  Активізуємо проект файлів для нової програми С++ та виконайте команду для зберігання їх на диску в задану папку (каталог):

  •  Виконайте команду Fіle/New Applіcatіon, щоб з'явилася нова чиста форма Form1;
  •  Перейдіть у вікно інспектора об'єкта і у властивості Captіon задайте назву лабораторної роботи "Анімація стандартних кліпів Windows ,  щоб на заголовку вікна форми програми С++ замість назви Form1 з'явився напис " Анімація стандартних кліпів Windows ";
  •  Збережить новий проект файлів разом з порожньою формою і змінамі в заголовку вікна. Це автоматично активізує новий проект файлів і C++ Buіlder запам'ятає шлях для швидкого збереження змін у файлах, розробляємої програми. Для збереження файлів проекту відрийте на диску таки папки D:\LA_NN\LAB-Б_Animate-AVI, де NN - номер навчальної групи;
  •  Далі у меню Fіle виберіть команду Save Project As та при появі запиту на збереження змінюємо назву файлу Unіt1 на файл U_Animate-AVI.срр, а пропонуєму назву проекту Project1.bpr змінюємо на P_ Animate-AVI.bpr.

Крок 2.  Далі потрібно скомпонувати форму прикладної програми з елементами, показаними на рис. 2.

Рис. 2 . Зображення форми програми С++ для виконання задачі Б.

Крок 3. Після закінчення розроби по рис. 2 форми програми потрібно у  редакторі текстів сформувати наступний лістинг команд для обробок подій при виконанні анімації AVI-файлу.  

//--------------------- U_Animate-AVI.срр ----------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "UAnimate.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int i;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BWindClick(TObject *Sender)

{

Animate1->Visible = true;

i = 1;

Animate1->CommonAVI = aviFindFolder;

Animate1->Active = true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BStopClick(TObject *Sender)

{

Animate1->Stop();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::BFileClick(TObject *Sender)

{

if (OpenDialog1->Execute())

 {

  i = 9;

  Animate1->FileName = OpenDialog1->FileName;

  Animate1->Visible = true;

  Animate1->Active = true;

 }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Animate1Stop(TObject *Sender)

{

i++;

switch (i)

{

 case 2: Animate1->CommonAVI = aviFindFile;

         break;

 case 3: Animate1->CommonAVI = aviFindComputer;

         break;

 case 4: Animate1->CommonAVI = aviCopyFiles;

         break;

 case 5: Animate1->CommonAVI = aviCopyFile;

         break;

 case 6: Animate1->CommonAVI = aviRecycleFile;

         break;

 case 7: Animate1->CommonAVI = aviEmptyRecycle;

         break;

 case 8: Animate1->CommonAVI = aviDeleteFile;

}

 if (i < 9) Animate1->Active = true;

 else Animate1->Visible = false;

}

//---------------------------------------------------------------------------

//--------------------- U_Animate-AVI.h ----------------------------------------

//---------------------------------------------------------------------------

#ifndef UAnimateH

#define UAnimateH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ComCtrls.hpp>

#include <Dialogs.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TAnimate *Animate1;

TOpenDialog *OpenDialog1;

TButton *BWind;

TButton *BFile;

TButton *BStop;

void __fastcall BWindClick(TObject *Sender);

void __fastcall BStopClick(TObject *Sender);

void __fastcall BFileClick(TObject *Sender);

void __fastcall Animate1Stop(TObject *Sender);

private: // User declarations

public:  // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

//----------------------------------------------------------------------------

//--------------------- P_Animate-AVI.срр ----------------------------------------

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

USERES("PAnimate.res");

USEFORM("UAnimate.cpp", Form1);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

 Application->Initialize();

 Application->CreateForm(__classid(TForm1), &Form1);

 Application->Run();

}

catch (Exception &exception)

{

 Application->ShowException(&exception);

}

return 0;

}

//---------------------------------------------------------------------------

PAGE  - 1 -


 

А также другие работы, которые могут Вас заинтересовать

23013. Синхронічний та діахронічний аспекти вивчення мовних одиниць 33 KB
  syn разом і chronos час тобто одночасність 1 стан мови в певний момент її розвитку в певну епоху; 2 вивчення мови в цьому стані в абстракції від часового чинника. dia через і chronos час тобто різночасність 1 історичний розвиток мови; 2 дослідження мови в часі в її історичному розвитку. Поступові кількісні зміни у мові протягом століть зумовили Якісні зміни причому такі що сучасному мовцеві важко зрозуміти давні тексти. Відповідно в мовознавстві розрізняють стан мови та розвиток мови.
23014. Проблема походження мови, основні теорії походження мови 43.5 KB
  Проблема походження мови основні теорії походження мови. Проблема походження мови є дуже складною. проблему походження мови порушувалася в межах філософських дискусій про сутність мови. Представники школи Платона вважали що назви предметам даються не довільно а відповідно до їх Природи що свідчить про природний характер мови і відповідно закономірну біологічну зумовленість її виникнення.
23015. Синтагматичний та парадигматичний аспекти дослідження мовних одиниць 28 KB
  Синтагматичний та парадигматичний аспекти дослідження мовних одиниць. Синтагматика один із двох системних аспектів у вивченні мови який розглядає відношення між послідовно розташованими одиницями за їхнього безпосереднього поєднання в реальному потоці мовлення або в тексті тобто сполучуваність мовних одиниць. Парадигматична методика охоплює опозиційний прийом на основі зіставлення і протиставлення мовних одиниць встановлюються їх диференційні ознаки а на основі спільності й відмінності одиниці об'єднуються в різні парадигматичні...
23016. Фактори розвитку мов. Поняття національна мова, літературна мова 29 KB
  Поняття національна мова літературна мова. Літературна мова унормована мова суспільного спілкування загальноприйнята в писемній та усній практиці. Літературна мова одна із форм національної мови що існує поряд з іншими її формами діалекти просторіччя мова фольклору.мови нормованість кодифікованість полі функціональність загально значущість наявність не тільки писемного а й усного різновиду.
23017. Семіотика як наука про знакові системи 35 KB
  Вивчення мови на рівних правах і тотожними методами мислиться в складі семіології єдиної науки про знаки. За першою класифікацією всі знаки поділяють на знакиіндекси знакикопії знакисигнали і знакисимволи. Знакиіндекси знакиприкмети і знакисимптоми знаки пов'язані з позначуваними предметами як дії зі своїми причинами. Знакикопії відтворення репродукції подібні на позначувані предмети.
23018. Мова як особлива знакова система 34 KB
  Мова як особлива знакова система. Знак матеріальний чуттєво сприйманий предмет який є представником іншого предмета і використовується для отримання зберігання і передачі інформації У світі існують різноманітні системи знаків які служать для передачі інформації. Серед них наприклад дорожні знаки морська сигналізація прапорцями та інші знаки. Основними ознаками знака є матеріальність його можна бачити чути тобто сприймати органами чуттів використання його для позначення чогось що перебуває поза ним інформативність.
23019. Основні властивості знаків, мовних знаків 34.5 KB
  Основні властивості знаків мовних знаків. Про довільність мовних знаків свідчить той факт що одні й ті ж поняття в різних мовах передаються різними словами укр. До вмотивованих мовних знаків передусім належать звуконаслідувальні слова типу бух ляп хлоп хіхікати. Саме завдяки цьому асиметричному дуалізмові структури знаків лінгвальна система може еволюціонувати.
23020. Мова і мовлення 32 KB
  Мова і мовлення Мова система одиниць спілкування і правил їх функціонування. Іншими словами мова це інвентар словник і граматика які існують у потенції в можливості Мовлення конкретно застосована мова засоби спілкування в їх реалізації. Усе те що пересічні мовці розуміють під словом мова насправді є власне мовою і мовленням. Розмежування мови і мовлення теоретично обґрунтоване швейцарським лінгвістом Ф.
23021. Мова, мислення, свідомість 35 KB
  Мова мислення свідомість Мислення узагальнене й абстрактне відображення мозком людини явищ дійсності в поняттях судженнях й умовиводах. Щодо мови і мислення в науці існували два протилежні й неправильні погляди ототожнення мови й мислення Д. Гаман і відривання мови від мислення Ф. Представники першої точки зору вважали що мова це всього лише форма мислення.