12402

РОДОСЛІДЖЕННЯ АЛГОРИТМУ ДИНАМІЧНОЇ ГРАФІКИ

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

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

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

Украинкский

2013-04-27

75 KB

1 чел.

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

РОДОСЛІДЖЕННЯ АЛГОРИТМУ ДИНАМІЧНОЇ ГРАФІКИ

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

1. Загальні зведення до динамічної графіки на формі вікна

Динамічна графіка на формі вікна програми будується на принципах мультиплікації окремих кадрів з зображенням. Для динамічної графіки необхідно будувати набір кадрів і кожних з них трішечки повинен відрізнятися деяким елементом від попереднього кадру в послідовності. Динамічне графічне зображення виникає за рахунок перегляду кадрів у завданій послідовності при відповідному інтервалі часу між змінами кадрів. Зменшення інтервалу часу між кадрами збільшує динаміку графічного зображення, а збільшення інтервалу часу – навпаки уповільнює динаміку спостереження графічних кадрів.

В С++ Builder для розробки прикладних програм з керуванням інтервалів часу використовується компонента Timer . Таймер має дві властивості , яки дозволяють керувати роботою компоненти Timer :

- перша властивість Interval визначає в мілісекундах інтервал зміни часу між кадрами динамічної графіки або іншими подіями в прикладній програмі. Наприклад, значення 500 для властивості Interval фізично відповідає 0,5 сек.;

- друга властивість Enabled  доступність до роботи компоненти.

Властивість Interval задає період спрацьовування таймеру і може налаштовуватись при проектуванні форми або встановлюватись програмно при роботі програми. Якщо при запуску програми властивість Interval завдано, тоді активним буде у програмі С++ обробник події OnTimer  кожен раз після закінчення інтервалу часу, завданого у властивості Interval . Якщо задати для   Interval = 0 або для  Enabled = false, тоді таймер стане вимкнутим. Для включення відліку часу потрібно задати Enabled = true. Оператори у програмі С++ для керування властивостями компоненти таймер записуються у таких форматах:  

Timer->Interval = 5000;

Timer->Enabled = true; .

Кнопка SpeedButton з фіксацією положення (натиснута / не натиснута) може мати напис або зображення іконки. У властивості Caption задається напис на кнопку та можливо додати зображення іконки у властивості Glyph . 

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

При виконанні лабораторної роботи потрібно створити програму С++ для роботи у Wіndows, в який на формі вікна можливо буде вести спостереження за динамічною графікою зображення та досліджувати при допомозі відладчіка С++ Builder у покроковому режимі виконання алгоритму з динамічної графіки. По результатах досліджень алгоритму з динамічної графіки потрібно:

- визначити перелік функцій, яки забезпечують динаміку для графічного зображення на формі програми С++;

- скласти специфікацію на визначені функції та їх призначення у програмі С++ з динамічним графічним зображенням на формі;

- розробити блок-схеми алгоритмів до функцій, записаних до специфікації;

- розробити блок-схему алгоритму з функціонування програми С++ з динамічним графічним зображенням на формі.

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

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

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

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

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

Рис. 1. Форма програми для роботи з динамічною графікою.

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

//------------------------------- U_dinamica.срр --------------------------------------

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

#include <vcl.h>

#pragma hdrstop

#include "U_dinamica.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

short int num = 0;

short int H=20;                              // шаг

short int Xpos = 2 * H;                 // координати тіла

short int Ypos = 120;                    // "земля"

short int Hmen = 30;                     // висота тіла

short int Rhead = 10;                    // радіус голови

short int Rhead2 = Rhead / 2;      // радіус ладоньок

short int revers = 1;                      // напрямок руху

short int L = H * 1.41;                  // довжина ноги

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

void __fastcall TForm1::Draw()

{

short int Yhead;                            // координата голови знизу

switch (num)

{

case 0:

  Yhead = Ypos-H-Hmen;

  Image1->Canvas->MoveTo(Xpos-H,Ypos);

  Image1->Canvas->LineTo(Xpos,Ypos-H);                                  // нога

  Image1->Canvas->LineTo(Xpos+H,Ypos);                                // друга нога

  Image1->Canvas->MoveTo(Xpos,Ypos-H);

  Image1->Canvas->LineTo(Xpos,Yhead);                                   // тіло

  Image1->Canvas->MoveTo(Xpos+revers*H,Yhead-H);

  Image1->Canvas->LineTo(Xpos,Yhead+4);                              // рука

  Image1->Canvas->Ellipse(Xpos+revers*H-Rhead2,Yhead-H-Rhead2,Xpos+revers*H+Rhead2,Yhead-H+Rhead2);

  Image1->Canvas->LineTo(Xpos+revers*H,Yhead+H);           // друга рука

  Image1->Canvas->Ellipse(Xpos+revers*H-Rhead2,Yhead+H-Rhead2,Xpos+revers*H+Rhead2,Yhead+H+Rhead2);

  Image1->Canvas->Ellipse(Xpos-Rhead,Yhead,Xpos+Rhead,Yhead-2*Rhead);

  Image1->Canvas->Rectangle(Xpos-Rhead,Yhead-2*Rhead-1,

                  Xpos+Rhead,Yhead-2*Rhead-4);                                // шляпа

  break;

case 1:

  Yhead = Ypos-L-Hmen;

  Image1->Canvas->MoveTo(Xpos,Ypos);

  Image1->Canvas->LineTo(Xpos,Yhead);

  Image1->Canvas->MoveTo(Xpos,Yhead+4);

  Image1->Canvas->LineTo(Xpos+revers*L,Yhead+4);

  Image1->Canvas->Ellipse(Xpos+revers*L-Rhead2,Yhead+4-Rhead2,Xpos+revers*L+Rhead2,Yhead+4+Rhead2);

  Image1->Canvas->Ellipse(Xpos-Rhead,Yhead,Xpos+Rhead,Yhead-2*Rhead);

  Image1->Canvas->Rectangle(Xpos-H / 2,Yhead-2*Rhead-1,

                            Xpos+H / 2,Yhead-2*Rhead-4);

}

}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

Draw();

if ((Xpos >= Image1->Picture->Width-H)||(Xpos <= H))

  revers = -revers;

Xpos = Xpos + revers * H;

num = 1 - num;

Draw();

}

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

void __fastcall TForm1::BRunClick(TObject *Sender)

{

Timer1->Enabled = ! Timer1->Enabled;

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

//можна зняти коментар для зміни фону

//  if (OpenPictureDialog1->Execute())

//    Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);

 Image1->Canvas->Brush->Color = 0;

 Image1->Canvas->Rectangle(90,0,200,100);

 Image1->Canvas->Brush->Color = clWhite;

 Image1->Canvas->MoveTo(0,Ypos+3);

 Image1->Canvas->Pen->Width = 4;

 Image1->Canvas->LineTo(Image1->ClientWidth,Ypos+3); // çåìëÿ

 Image1->Canvas->Pen->Width = 1;

 Image1->Canvas->Pen->Mode = pmNotXor;

Draw();

}

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

//--------------- U_dinamica.h---------------------------------------

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

#ifndef UMult1H

#define UMult1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Buttons.hpp>

#include <Dialogs.hpp>

#include <ExtCtrls.hpp>

#include <ExtDlgs.hpp>

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

class TForm1 : public TForm

{

__published: // IDE-managed Components

TImage *Image1;

TSpeedButton *BRun;

TTimer *Timer1;

TOpenPictureDialog *OpenPictureDialog1;

void __fastcall FormCreate(TObject *Sender);

void __fastcall BRunClick(TObject *Sender);

void __fastcall Timer1Timer(TObject *Sender);

private: // User declarations

public:  // User declarations

void __fastcall Draw();

__fastcall TForm1(TComponent* Owner);

};

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

extern PACKAGE TForm1 *Form1;

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

#endif

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

/------------ P_dinamica.cpp ---------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

USERES("P_dinamica.res");

USEFORM("U_dinamica.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 -


 

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

43822. Оцінка і узагальнення інформації щодо використання методів прогнозування в процесі прийняття управлінських рішень 774.66 KB
  У давнину люди приймали рішення покладаючись на інтуїтивні почуття прогнози астрологів. Для здійснення функцій регулювання економічними процесами необхідно знати майбутнє багатьох економічних явищ з тим щоб прийняти правильне рішення у теперішньому. У ході оцінки альтернатив і прийнятті рішення менеджер повинен прогнозувати можливі результати в різних обставинах. Менеджерська діяльність базується на підготовці та здійсненні необхідного управлінського рішення на основі його економічного обґрунтування і подальшій послідовній систематизації...
43823. Расчет схемы лазерной охранной системы 135.77 KB
  Но в любом случае охранное устройство на какой бы элементной базе не было построено состоит из двух модулей: приемник и передатчик. Схемное построения этих модулей могут быть различны, я в качестве темы для разработки взял схему охранной сигнализации которая обеспечивает контроль окружающего пространства с помощью лазерного луча.
43824. Разработка автоматизированной системы по работе с клиентами для технического отдела ОАО «ЮТК», г. Ессентуки 832.39 KB
  Услуги связи по передаче данных за исключением услуг связи по передаче данных для целей передачи голосовой информации. Основная ценность и полезность данных документов заключается в том что они регламентируют ключевые работы и процессы. Ессентукский филиал ОАО ЮТК оказывает клиентам следующие виды услуг: услуги местной телефонной связи; дополнительные виды обслуживания ДВО; услуги внутризоновой телефонной связи; услуги телеграфной связи; услуги проводного вещания; услуги передачи данных телематические...
43825. Исследование состояния малого предпринимательства и финансового состояния ИП «Шарипова А.Г. 1.03 MB
  С переходом экономики Российской Федерации на рыночные отношения, а в связи с этим и началом развития малого бизнеса, в научную литературу и официальные документы прочно стали входить такие понятия как «малый бизнес», «малые предприятия», «предприниматели малого бизнеса», «предпринимательство и малый бизнес» и другие. К сожалению, многие эти понятия не унифицированы и поэтому в научной литературе они трактуются далеко не однозначно.
43826. Изучение государственного управления в сфере образования 67.7 KB
  Социально-экономическая характеристика образования в РФ 6 Состояние и развитие Российской системы образования Организация системы государственного управления в сфере образования Правовое регулирование образования в РФ
43827. Розрахунок електрозабезпечення приватного акціонерного товариства Комвольно суконна компанія Чексіл 551.57 KB
  Електромонтажні роботи в даний час ведуться на високому рівні інженерної підготовки, з максимальним перенесенням цих робіт із будівельних майданчиків в майстерні монтажно-заготовительних ділянок і на заводи електромонтажних організацій.
43828. Проектирование участка ТО – 2 легковых автомобилей 1.13 MB
  Предприятие неоднократно занимало призовые места в Областном и Республиканском соревнованиях и имело одни из самых высоких показателей по выработке на один таксомотор среди предприятий Министерства автомобильного транспорта России.
43829. ИНФОРМАЦИОННЫЕ ПРОЦЕССЫ, СВЯЗАННЫЕ С РЕШЕНИЕМ ЭКОНОМИЧЕСКИХ, ОРГАНИЗАЦИОННО – УПРАВЛЕНЧЕСКИХ И УЧЕТНЫХ ЗАДАЧ НА ООО «Строй-Арсенал» 2.08 MB
  Создание российских интернетмагазинов началось в 1995 году. Интернетмагазином считается такой магазин на сайте которого существует возможность полностью завершить покупку и оплатить ее или выписать счет для оплаты в банке. Большинство же российских Интернетмагазинов представляют собой webвитрины и осуществляют торговлю на заказ через Интернет.
43830. Определение возможности получения гречневой крупы под воздействием инфракрасной обработки 532.66 KB
  Основные продукты переработки зерна используемые в питании крупы и мука. В зернах гречихи содержатся: легко усваиваемые белки до 16 в том числе незаменимые аминокислоты аргинин и лизин; углеводы до 30 и жиры – до 3; много минеральных веществ железо кальций фосфор медь цинк бор йод никель кобальт; клетчатка; яблочная лимонная щавелевая кислоты; витамины группы В РР и Р рутин.Область применения В России выращиваемую гречку используют в основном для производства различных круп: ядрицы представляющей собой целые...