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 -


 

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

74081. ВОЗНИКНОВЕНИЕ БУРЖУАЗНОГО ГОСУДАРСТВА И ПРАВА 35 KB
  В зависимости от этого решался вопрос о форме государства созданного революцией о форме права и способах его кодификации. Буржуазное право Буржуазные революции положив начало перевороту в области социальных и политических отношений привели к значительным изменениям и в области права. Традиционные отрасли цивильного и карательного права дополняются новой и обособленной отраслью регулирования организации и деятельности учреждений государственной власти.
74082. Государство и право Англии 100 KB
  Накануне революции английское общество было расколото на два основных лагеря. Сторонники короля (роялисты) – представители “старого”, феодального дворянства и англиканского духовенства были опорой абсолютизма и выступали за сохранение прежних феодальных порядков и англиканской церкви. Противники абсолютизма (новое дворянство - “джентри” и буржуазия)
74083. Государство и право США в Новое время 76 KB
  Отношения американских колоний и метрополии в XVIII в. во многом определялись политикой Англии, стремящейся превратить колонии в сырьевой придаток и рынок сбыта. Это вызвало возмущение во всех слоях общества и в 60-е – начале 70-х гг. начались массовые выступления населения колоний. Королю была направлена петиция с просьбой прекратить притеснения и не давать повода к окончательному разрыву.
74084. Государство и право Франции в Новое время 144 KB
  В условиях острого кризиса абсолютизм был вынужден пойти на созыв Генеральных штатов, не собирающихся более 150 лет. Однако с самого начала работы делегаты третьего сословия, поддержанные частью других делегатов, вступили в конфликт с королевской властью. Депутаты организовались сначала в Национальное собрание, а позднее в Учредительное собрание
74085. Государство и право Германии в Новое время 93.5 KB
  Союзный акт 1815 г. стал основой для создания нового государственного объединения – Германского союза, представлявшего собой крайне расплывчатую конфедерацию. Он включал 34 государство и четыре вольных города (Франкфурт, Гамбург, Любек и Бремен), отличающихся исключительной пестротой государственных форм: одна империя (Австрия)
74086. Организация производственного процесса. Производственный процесс и принципы его организации 841 KB
  К основным относятся процессы, связанные непосредственно с превращением предмета труда в готовую продукцию (например, переплавка руды в доменной печи и превращение ее в металл; превращение муки в тесто, затем в испеченный хлеб), т.е., это технологические процессы, в ходе которых происходят изменения геометрических форм, размеров и физико-химических свойств предметов труда. Основными называются производственные процесс
74087. Типы производства и их технико-экономическая характеристика 102 KB
  Тип производства определяется комплексной характеристикой технических организационных и экономических особенностей производства обусловленных широтой номенклатуры регулярностью стабильностью и объемом выпуска продукции. Основным показателем характеризующим тип производства является коэффициент закрепления операций Кз. Различают три типа производства: единичное серийное массовое.
74088. Организация вспомогательного производства и обслуживающих хозяйств 757 KB
  Инструментальное хозяйство занимает ведущее место в системе технического обслуживания производства. Современный технический и организационный уровень машиностроения определяется высокой оснащенностью его моделями, штампами, прессформами, приспособлениями, режущим, измерительным и вспомогательными инструментами и приборами, объединенными в общий комплекс технологической оснастки.
74089. Совершенствование организации производства и оценка ее экономической эффективности 237 KB
  Совершенствование организации производства и оценка ее экономической эффективности Основные пути развития организационных резервов Многообразие производственнотехнических условий работы промышленных предприятий определяет значение различных путей использования организационных резервов. Организационные резервы производства Для того чтобы разработать пути совершенствования организации производства в объединениях и на предприятиях необходимо оценить состояние и уровень организации производства. Состояние организации производства характеризует...