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 -


 

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

39014. Автоматизированные информационные системы 97.5 KB
  В настоящее время проблема выбора информационной системы ИС из специфической задачи превращается в стандартную процедуру. На российских предприятиях зачастую используют системы первого или второго поколения. Процедура принятия решения о выборе наиболее эффективной компьютерной системы управления нова для большинства отечественных руководителей а ее последствия во многом будут оказывать значительное влияние на предприятие в течение нескольких лет.
39015. Физические системы 34 KB
  Энергию всегда можно представить в виде произведения двух сомножителей один из которых описывает интенсивность расхода или накапливания энергии а второй характеризует количественные результаты этого процесса. Активными элементами служат источники энергии. Пассивные элементы системы служат либо для накопления либо для поглощения энергии. Накопители энергии могут накапливать либо потенциальную либо кинетическую энергию.
39016. ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ МОДЕЛИРОВАНИЯ 64.5 KB
  Речь идет о том что создаваемая модель должна отражать в первую очередь те свойства реальной системы или явления которые влияют на выбранный показатель эффективности. В ряде случаев моделируемая система имеет в своем составе некоторые относительно изолированные подсистемы характеризующиеся определенным параметром в том числе векторным. Такие подсистемы можно заменять в модели соответствующими числовыми величинами а не описывать процесс их функционирования. При имитационном моделировании используемая математическая модель...
39017. Модели методов разработки программного обеспечения информационных систем 158.5 KB
  По определению одного из создателей языка UML Unified Modelling Lnguge Гради Буча: Объектноориентированное программирование ООП это методология программирования основанная на представлении программы в виде совокупности объектов каждый из которых является экземпляром определенного класса а классы образуют иерархию наследования. Леоненкова Самоучитель UML . Методы ООП и ООАП базируются на стандартном языке визуального моделирования UML. Применение методов ООП ООАП и...
39018. Системы регистрации учебных курсов 56 KB
  Системы регистрации учебных курсов Разделы Лекции 3: 3.1 Два вида систем регистрации курсов Лекция 5 будет посвящена применению языка UML к проектированию американской автоматизированной системы АИС регистрации платных учебных курсов университета Истерн Estern Stte University ESU. В этой связи сопоставим автоматизированную систему Истерн с действующей в МИРЭА неавтоматизированной системой регистрации учебных курсов. В любом Вузе в том числе в МИРЭА существует постоянно...
39019. Теория графов и графовые сети 98.5 KB
  Кстати наш вебкурс также представляет собой сложную систему.1 Вебсистемы После построения Интернет и создания на его базе Всемирной паутины World Wide Web WWW в компьютерном мире появились вебинформационные системы или кратко вебсистемы. Под вебсистемой мы будем понимать компьютерную систему работающую на основе Интернет Веб. Можно привести многочисленные примеры конкретных вебсистем.
39020. Веб-системы 69 KB
  Образующие Разделы Лекции 7: 7.1 Образующие Образующие это непроизводные атомарные элементы теории паттернов из которых составляются паттерновые сети. Образующие имеют неотделимые от них связи. В дискретной теории паттернов рассматриваются образующие обладающие конечными числами связей.
39021. Паттерновые сети 44.5 KB
  Паттерновые сети Разделы Лекции 8: 8.1 Абстрактные конкретные и ассоциированные паттерновые сети Из образующих путем попарного соединения их связей составляются паттерновые сети. Две соединенные связи образующих называются связкой паттерновой сети. Каждой связке сети устанавливается отношение связей  соединено которое может иметь значение либо ИСТИНА либо ЛОЖЬ в зависимости от условия соединения связки.
39022. Проектирование экономических информационных 505.5 KB
  Средства структурного анализа и проектирования Метод функционального моделирования SDT Диаграммы потоков данных. Словари данных и спецификации процессов. Моделирование данных. 1 Система управления совокупность взаимодействующих структурных подразделений экономической системы осуществляющих функции управления: планирование определение цели функционирования экономической системы на различные периоды времени; учет отображение состояния объекта управления в результате...