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 -


 

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

79495. Текущая и отчетная документация ПСО учреждения 34.5 KB
  План работы педагога-психолога форма. При составлении плана необходимо учитывать: Цели и задачи образовательного учреждения; Приоритет прав и интересов ребенка Нормы расхода времени на каждый вид деятельности План работы включает Название работы Условия проведения Ответственный Срок проведения Предполагаемый результат План работы составляется на периоды месяц учебная четверть и т.Журнал учета групповых форм работы форма 4. К групповым формам работы относят: Тренинг с детьми или взрослыми Коррекционные или развивающие занятия с...
79496. Психологическое просвещение как вид деятельности психолога образования 31.27 KB
  Основной смысл психологического просвещения заключается в том чтобы: 1 знакомить воспитателей учителей и родителей с основными закономерностями и условиями благоприятного психического развития ребенка; 2 популяризировать и разъяснять результаты новейших психологических исследований; 3 формировать потребность в психологических знаниях желание использовать их в работе с ребенком или в интересах развития собственной личности; 4 знакомить учащихся с основами самопознания самовоспитания; 5 достичь понимания необходимости практической...
79497. Психопрофилактическое направление в деятельности педагога-психолога 31.23 KB
  Психопрофилактика специальный вид деятельности психолога направленный на сохранение укрепление и развитие психологического здоровья детей. Психопрофилактика предполагает: Ответственность за соблюдение в образовательных учреждениях психологических условий необходимых для полноценного психического развития и формирования личности на каждом возрастном этапе: Своевременное выявление таких особенностей ребенка которые могут привести к определенным сложностям отклонениям в интеллектуальном и эмоциональном развитии в поведении и отношениях;...
79498. Основная задача психопрофилактики. Понятие психологического здоровья 25.46 KB
  Психологическое здоровье оптимальное функционирование всех психических структур необходимых для текущей жизнедеятельности. Психологическое здоровье это не только душевное но еще и личностное здоровье. Это состояние когда душевное здоровье сочетается с личностным.
79499. Содержание психопрофилактической работы в образовательном учреждении 33.61 KB
  Психолог анализирует все что окружает детей и во что те включены игру учебный процесс воспитательные мероприятия взаимоотношения со взрослыми и сверстниками походы в театр и на природу предметные кружки и спортивные секции и т. Психолог выявляет такие психологические особенности ребенка которые могут в дальнейшем обусловить возникновение определенных сложностей или отклонений в его интеллектуальном или личностном развитии.Психолог следит за соблюдением в детском саду школе и других психологических условий обучения и воспитания...
79500. Понятие школьной дезадаптации, ее поведенческие и личностные показатели 33.29 KB
  В самом общем смысле под школьной дезадаптацией подразумевается совокупность признаков свидетельствующих о несоответствии социопсихологического и психофизиологического статуса ребёнка требованиям ситуации школьного обучения овладение которой по ряду причин становится затруднительным. Компонентами школьной дезадаптации могут выступать следующие. Поведенческий компонент показателями которого выступают повторяющиеся трудно корригируемые нарушения поведения: патохарактерологические реакции антидисциплинарное поведение пренебрежение правилами...
79501. Программа сопровождения процесса адаптации 28.44 KB
  В предлагаемой программе решаются следующие задачи: снижение эмоционального напряжения; развитие внутренней активности детей; формирование адекватной самооценки детей; развитие познавательных процессов; развитие коммуникативных навыков.
79502. Диагностика дезадаптации 32.65 KB
  Столина проективных методик: рисунок семьи рисунок несуществующего животного рисунок школы; метод Социометрия беседы с детьми родителями учителями; изучение медицинских карт детей. Векслера выявление уровня тревожности и агрессивности с помощью методики Рисунок несуществующего животного выявление взаимосвязи мотивации и дезадаптации с помощью методики Рисунок школы исследование межличностных отношений методом социометрического опроса определение эмоционального климата в семье и зависимости между типом воспитания и...