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 -


 

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

71518. Использование конструкторов и деструктора при проектировании пользовательского класса 144.21 KB
  Цель работы: Получить практические навыки в разработке алгоритмов и написании программ с использованием конструкторов и деструктора при проектировании пользовательского класса. Оборудование: IBM – совместимый компьютер, система программирования BC3.1, MVC++ 6.00.
71519. Разработка и отладка алгоритмов и программ с использованием указателей 313.5 KB
  Цель работы: Получить практические навыки в разработке алгоритмов и написании программ на языке С с использованием указателей. Оборудование: IBM – совместимый компьютер, система программирования BC3.1, MVC++ 6.00.
71520. Разработка и отладка алгоритмов и программ обработки массивов 233.01 KB
  Цель работы: Получить практические навыки в разработке алгоритмов и написании программ на языке С, обрабатывающих массивы. Оборудование: IBM – совместимый компьютер, система программирования BC3.1, MVC++ 6.00. Вариант 4 Дано натуральное число N. Сколько цифр в числе N?
71521. Мультимедиа технологии 147.51 KB
  Задан речевой сигнал (каждый отсчет представлен 16 битовым целым числом). Файл NAT.WAV Разделить сигнал на кадры по 240 отсчетов каждый. Кадр 77 из 179 Текущий кадр -1528 -2817 -3071 -2677 -2428 -2435 -2394 -1941 -966 316 1457 1962 1757 1220 392 -93 4 -74 -302 -943...
71522. Детали машин и основы конструирования (Курс лекций) 4.19 MB
  Курс лекций нацелен на формирование базовых знаний, необходимых для успешного последующего изучения машин, их конструкции и рабочих процессов, происходящих в них при обычных и экстремальных условиях. В свою очередь, Курс лекций базируется на знаниях, полученных при изучении естественнонаучных...
71523. Хозяйственное и трудовое право 669 KB
  Одним из основных условий успешного построения гражданского общества с рыночной экономикой является наличие у руководителей и специалистов глубоких знаний в области хозяйственного и трудового права и умение использовать их в хозяйственной практике..
71524. Лекции по курсу Истории Отечества 313 KB
  Угрофинские, финские, прибалтийские и балтийские народы, чуваши жили на территории современной России. Через территорию России проходили скифы, авары, унгры, булгары, хазары, сарматы. Были и остготы, создавшие первые государственные образования. Прародиной славян считается часть Польши...
71525. История науки и техники 140 KB
  Афины стали главным ремесленным центром Средиземноморья однако у греческих предпринимателей не хватало рабочей силы – тогда они стали покупать рабов. В греческих судах каждый должен был защищать себя сам; на этих процессах истцы и ответчики изощрялись в ораторском искусстве...