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 -


 

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

5352. Машины для уплотнения грунтов 26.79 KB
  Машины для уплотнения грунтов Свежеуложенный грунт в земляном сооружении должен быть уплотнен во избежание самопроизвольного изменения геометрической формы и просадок. Для понижения водопроницаемости земляного сооружения применяют искусственное упло...
5353. Работа со списками в MS EXCEL. Консолидация данных 39 KB
  Работа со списками в MS EXCEL. Консолидация данных Цель: Приобрести навыки консолидации данных в среде MS Excel. Краткая теория Цель работы: Получить навыки вычислений и подведения итогов в MS Excel для различных диапазонов с помощью процедуры ...
5354. Разработка системы автоматического регулирования (САР) 416.5 KB
  Целью данной курсовой работы является разработка системы автоматического регулирования (САР) натяжения материала технологической линии по производству и обработке ленточных и нитевидных материалов. Протягивание материала в рассматриваемой...
5355. Информационная технология таблицы подстановки 104 KB
  Информационная технология таблицы подстановки Цель работы: приобретение навыков решения задач анализа с ограниченным числом одновременно изменяемых параметров модели средствами MSExcel. Краткая теория На практике часто возникает необходимость ...
5356. Машины постоянного тока 497.5 KB
  Машины постоянного тока Устройство, принцип действия и электромагнитный момент машины постоянного тока Реакция якоря машины постоянного тока Коммутация в коллекторных машинах постоянного тока Генераторы постоянного тока Двигатели постоянног...
5357. Синхронные машины. Конспект лекций 996 KB
  Устройство и принцип действия. Статор синхронной машины имеет такое же устройство, как и статор асинхронной машины. Трехфазная или в общем случае m-фазная обмотка машины выполняется с таким же числом полюсов, как и ротор, и называется так же обмотко...
5358. Вернадский: Учение о ноосфере и современное глобальное мышление 258.71 KB
  Истинное величие Вернадского выясняется только теперь. Оно в его глубоких философских идеях,заглядывающих в будущее,вплотную затрагивающих судьбы всего человечества. Он родился в Петербурге в 1863 году...
5359. Проектирование столовой общедоступной на 100 мест 1.17 MB
  Предприятия общественного питания - это предприятия, предназначенные для производства кулинарной продукции, мучных кондитерских и булочных изделий, их реализации и организации питания. Индустрия общественного питания находится еще в ...
5360. Принципы работы с элементами управления 238 KB
  Принципы работы с элементами управления Любое стандартное приложение Windows использует различные элементы управления, такие, как кнопки, полосы просмотра, редакторы текстов и т.д, реализованные в виде дочерних окон. Дочерние окна управления Так как...