12404

РОБОТА С ФРАГМЕНТАМИ IMAGE

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

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

ЛАБОРАТОРНА РОБОТА № 9 РОБОТА С ФРАГМЕНТАМИ IMAGE Ціль лабораторної роботи складається з вивчення: структури і призначення елементів інтегрованого середовища С Buіlder для розробки прикладних програм С по роботі на формі вікна з фрагментами зображення з файлу .bmp на осн

Русский

2013-04-27

77.5 KB

1 чел.

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

РОБОТА С ФРАГМЕНТАМИ IMAGE

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

  1.  Загальні зведення до роботи з фрагментами

зображення на формі вікна

Як відомо, розміщення зображення на формі вікна з файлів .bmp забезпечує компонента Image. Поєднання обробника подій маніпулятора «мишка» над компонентою Image дозволяє виконувати дії з фрагментами зображення , завантаженого з файлу .bmp .  

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

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

  •  завантаження на форму зображення з файлу .bmp ;
  •  формування окремих фрагментів з зображення, яке було розміщено у компоненту Image;
  •  вільне переміщення сформованих фрагментів зображення з компоненти Image по формі вікна програми за рахунок обробки подій до маніпулятора «мишка».

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

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

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

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

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

Рис. 1. Форма програми для роботи з фрагментами Image.

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

//------------------------------- U_fragment.срр --------------------------------------

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

#include <vcl.h>

#pragma hdrstop

#include "U_fragment.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int X0, Y0;

bool move = false;

TRect rec;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

TImage * Pict = new TImage(Form1);

Pict->AutoSize = true;

/* Файл для розподілу на фрагменти */

Pict->Picture->LoadFromFile("MIK-21.BMP");

Image5->Canvas->CopyRect(Image5->ClientRect, Pict->Canvas,

                         Rect(0,0,Pict->Width, Pict->Height));

Image1->Canvas->CopyRect(Image1->ClientRect, Pict->Canvas,

                 Rect(0,0,Pict->Width / 2,Pict->Height / 2));

Image2->Canvas->CopyRect(Image2->ClientRect, Pict->Canvas,

       Rect(Pict->Width / 2,0,Pict->Width,Pict->Height / 2));

Image3->Canvas->CopyRect(Image3->ClientRect, Pict->Canvas,

      Rect(0,Pict->Height / 2,Pict->Width / 2,Pict->Height));

Image4->Canvas->CopyRect(Image4->ClientRect, Pict->Canvas,

                   Rect(Pict->Width / 2,Pict->Height / 2,

                   Pict->Width,Pict->Height ));

delete Pict;

Image3->ManualFloat(Rect(Form1->Left+Image3->Left,

                    Form1->Top+Image3->Top,

                    Form1->Left+Image3->Left+Image3->Width,

                    Form1->Top+Image3->Top+Image3->Height));

Image3->ManualDock(Form1,NULL,alLeft);

Image4->ManualFloat(Rect(Form1->Left+Image4->Left,

                    Form1->Top+Image4->Top,

                    Form1->Left+Image4->Left+Image4->Width,

                    Form1->Top+Image4->Top+Image4->Height));

Image4->ManualDock(Form1,NULL,alLeft);

}

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

void __fastcall TForm1::Image1MouseDown(TObject *Sender,

     TMouseButton Button, TShiftState Shift, int X, int Y)

{

 if(Button != mbLeft) return;

 X0 = X;

 Y0 = Y;

 move = true;

 ((TControl *)Sender)->BringToFront();

}

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

void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,

     int X, int Y)

{

if (move)

{

 TImage * Im = (TImage *)Sender;

 Im->SetBounds(Im->Left + X - X0,

         Im->Top + Y - Y0, Im->Width, Im->Height);

}

}

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

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,

     TShiftState Shift, int X, int Y)

{

move = false;

}

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

void __fastcall TForm1::Image2MouseDown(TObject *Sender,

     TMouseButton Button, TShiftState Shift, int X, int Y)

{

if(Button != mbLeft) return;

X0 = X;

Y0 = Y;

rec = ((TControl *)Sender)->BoundsRect;

move = true;

}

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

void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,

     int X, int Y)

{

if(! move) return;

Canvas->DrawFocusRect(rec);

rec.left += X - X0;

rec.right += X - X0;

rec.top += Y - Y0;

rec.bottom += Y - Y0;

X0 = X;

Y0 = Y;

Canvas->DrawFocusRect(rec);

}

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

void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button,

     TShiftState Shift, int X, int Y)

{

Canvas->DrawFocusRect(rec);

if(! Shift.Contains(ssAlt))

{

((TControl *)Sender)->SetBounds(

                      rec.Left + X - X0, rec.Top + Y - Y0,

                      ((TControl *)Sender)->Width,

                      ((TControl *)Sender)->Height);

((TControl *)Sender)->BringToFront();

}

move = false;

}

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

void __fastcall TForm1::Image4EndDock(TObject *Sender, TObject *Target,

     int X, int Y)

{

((TControl *)Sender)->BringToFront();  

}

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

void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,

     int X, int Y)

{

 const int SC_DRAGMOVE = 0xF012;

 ReleaseCapture();

 Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);

}

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

//--------------Fragmet-image.cpp------------------------------------

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

#include <vcl.h>

#pragma hdrstop

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

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

}

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

//------------- U_fragment.h---------------------------------------------

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

#ifndef UMoveH

#define UMoveH

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ExtCtrls.hpp>

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

class TForm1 : public TForm

{

__published: // IDE-managed Components

TImage *Image1;

TImage *Image2;

TImage *Image3;

TImage *Image4;

       TImage *Image5;

void __fastcall FormCreate(TObject *Sender);

void __fastcall Image1MouseDown(TObject *Sender, TMouseButton

         Button, TShiftState Shift, int X, int Y);

         

void __fastcall Image1MouseMove(TObject *Sender, TShiftState Shift,

         int X, int Y);

         

void __fastcall Image1MouseUp(TObject *Sender, TMouseButton Button,

         TShiftState Shift, int X, int Y);

void __fastcall Image2MouseDown(TObject *Sender, TMouseButton

         Button, TShiftState Shift, int X, int Y);

         

void __fastcall Image2MouseMove(TObject *Sender, TShiftState Shift,

         int X, int Y);

void __fastcall Image2MouseUp(TObject *Sender, TMouseButton Button,

         TShiftState Shift, int X, int Y);

void __fastcall Image4EndDock(TObject *Sender, TObject *Target,

          int X, int Y);

void __fastcall FormMouseMove(TObject *Sender, TShiftState Shift,

         int X, int Y);

         

private: // User declarations

public:  // User declarations

__fastcall TForm1(TComponent* Owner);

};

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

extern PACKAGE TForm1 *Form1;

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

#endif

PAGE  - 1 -


 

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

80976. Проблема методів навчання історії та їх класифікація 36.03 KB
  Провідні поняття повязані з процесом навчання історії стали предметом наукового інтересу в дискусіях радянських методистів у 5070ті pp. В обговоренні проблеми свої варіанти класифікації методів навчання історії в різні роки запропонували всі провідні вчені однак вони так і не прийшли до єдиної думки. Тому в сучасній методичній літературі збереглася різноманітність підходів до визначення понять методи прийоми способи навчання різні підстави їх систематизації і деяка суперечливість у вживанні методичних термінів у спеціальній...
80977. Дайте загальну характеристику історичних карт 37.4 KB
  Історичні карти карти що відображують історичні явища і події взаємозвязки суспільних явищ минулого з географічними чинниками показують розміщення древніх культур держав соціальні рухи торгівельні дороги пересування людей військові удари на карті показують стрілками місця боїв схрещеними мечами райони повстань крапками або вогнищами. Історичні карти створюються на географічній основі і є математично визначеним зменшеним узагальненим образнознаковим зображенням історичних подій явищ процесів чи періодів...
80978. Прийоми і засоби навчання історії 33.36 KB
  Прийоми навчання це складова методу що немає самостійного навчального завдання а підпорядковується тому завданню який виконує метод. Методи навчання класифікують на загальні можуть використовуватися в процесі навчання будьяких навчальних предметів і спеціальні застосовуються для викладання окремих предметів але не можуть бути використані при викладанні інших предметів. Засіб навчання знаряддя за доп.
80979. Як використати на уроці методичні можливості підручника 38.26 KB
  Сучасна практика викладання історії в школах України переконливо свідчить що шкільний підручник ще довго залишатиметься найважливішим засобом навчання незважаючи на зростання інтересу до інших зокрема наочних комп\'ютерних технологійПерше знайомство з будьяким підручником учитель і учень розпо чинають із вступного тексту структури і особливостей його побудо ви різними видами тексту запитаннями і завданнями а також ілюст раціями картами. Весь текст підручника за обсягом і призначенням поділяють на основний додатковий і...
80980. Методика проведення навчальних екскурсій 35.46 KB
  Екскурсія - це вид навчальної роботи, при якому навчання проводиться на натуральному природному або виробничому обєкті поза межами школи, чи класу. екскурсія – це наочний метод отримання певних знань, виховання шляхом відвідин по заздалегідь розробленій темі певних об’єктів (музей, завод, підприємство тощо) із спеціальним керівником (екскурсоводом).
80981. Класифікація текстів та особливості використання підручника на уроці історії 35.67 KB
  Важливим засобомнавчан ня історії є друкований текст. У навчанні історії застосовуються різні види текстів. У навчанні історії розрізняють такі типи інтерпретації: науковоісторична.
80982. Підготовка вчителя історії до написання плану конспекту уроку 34.45 KB
  Для того щоб вчитель міг підготувати план конспект уроку йому спочатку скласти тематичне планування. Безпосередня підготовка вчителя до уроку це планування уроку конкретизація тематичного планування стосовно кожного окремо взятого уроку осмислення та складання плану і конспекту уроку після того як визначено основний зміст і спрямованість уроку. План уроку необхідний кожному вчителю незалежно від його стажу і рівня педагогічної майстерності.
80983. Методика використання мультимедійних засобів навчання на уроках історії 34.47 KB
  Перш за все потрібно сказати що використання мультимедійних засобів навчання на уроках є актуальною проблемою Тому що не всі вчителі вміють використовувати технічні засоби за допомогою яких проводиться мульт. Урок. А для того щоб користуватися такими уроками їх потрібно розробити.
80984. Структура та методичне забезпечення підручника «Історія України» (9 клас) 31.48 KB
  Теорія та суспільні виклики в першій половині ХІХстТема№2Українські землі в складі Російської та Австрійської імперії наприкінці 18пер.третині 19стТема№3Соціальноекономічне життя народу та український національний рух у першій половині ХІХстТема№4культурне життя в Українських землях нап.половині 19ст;Тема№5модернізація укр.ХІХстТема№6Національна ідея в др.