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 -


 

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

79266. Методы организации производства и их технико-экономическая характеристика 15.09 KB
  Различают три основных метода организации производства: индивидуальный единичный партионный и поточный. При индивидуальном единичном методе организации производства выпуск продукции осуществляется единичными экземплярами или очень мелкими партиями изделий широкой номенклатуры. Равномерная работа на всех участках производства при партионном методе достигается за счет определения оптимальных размеров партий заделов длительности цикла графиков запускавыпуска.
79267. Понятие и особенности производственного процесса. Основные принципы организации производственных процессов 14.73 KB
  По операциям ведется увязка объемов работ на участках: нормирование оперативное планирование и учет производства Основные операции – операции технологического цикла состоящие из операционных циклов в результате которых изменяются форма размеры свойства и взаимное расположение деталей Технологический процесс – совокупность основных операций Вспомогательные операции – операции обеспечивающие бесперебойность производственного процесса связанные с перемещением предметов труда с одного рабочего места на другое снятием и установкой...
79268. Классификация производственных процессов 53.5 KB
  Ручные процессы – осуществляются рабочими без помощи механизмов. Машинно-ручные процессы – выполняются машинами или механизмами при непосредственном участии в них рабочих – вскрытие чугунной летки с помощью ВЧП
79269. Организационное проектирование системы управления персоналом 12.21 KB
  СУП является основой системы управления организацией т. Стратегический выбор руководства организации в отношении ее целей: Идеология управления; b Типы потребителей; c Типы рынков сбыта и территориальное размещение производства. В общем виде проект системы управления организации состоит
79270. Цели, функции, организационная структура системы управления персоналом 229.37 KB
  Традиционно в службы управления персоналом входят: отдел кадров отдел обучения отдел труда и заработной платы отдел социального развития и другие отделы социальной инфраструктуры отдел охраны труда и техники безопасности лаборатория социологии отдел охраны окружающей среды юридический отдел отдел организации труда производства и управления отдел научнотехнической информации патентнолицензионный отдел бюро рационализации и изобретательства. 1 Цели системы управления персоналом организации с точки зрения персонала Рис. 2 Цели...
79271. Анализ и описание работы и рабочего места 13.44 KB
  Анализ рабочего места представляет собой дифференцирование рабочего места с одной стороны через задачи деятельность которая на нем совершается а с другой через требования по отношению к образованию опыту и ответственности необходимым для успешного выполнения деятельности на этом месте. АРМ как правило состоит из двух частей: описание рабочего места перечисление видов деятельности задач трудовых условий средств оборудования и материалов которые используются на данном рабочем месте; спецификация рабочего места перечисление...
79272. Кадровое обеспечение системы управления персоналом 30.16 KB
  Под кадровым обеспечением системы управления персоналом понимается необходимый количественный и качественный состав работников кадровой службы организации. Работники службы управления персоналом должны: хорошо знать трудовое законодательство методические нормативные и другие материалы касающиеся работы с персоналом учета личного состава; основы педагогики социологии и психологии труда; передовой отечественный и зарубежный опыт в области управления персоналом; владеть современными методами оценки персонала профориентационной работы...
79273. Информационное и техническое обеспечение системы управления персоналом 18.5 KB
  Реализация кадровых задач напрямую зависит от качества и количества информации на основе которой будет принято то или иное решение. Информационное обеспечение включает в себя сбор анализ и хранение информации. Качество представленной информации зависит от критериев оценки информации т. Полпота информации заключается в том объеме который необходим и достаточен для принятия управленческого решения.
79274. Нормативно-методическое и правовое обеспечение системы управления персоналом 16.07 KB
  Нормативнометодическое обеспечение системы управления персоналом представляет собой обеспечение документами устанавливающими нормы управления правила и методы организации труда необходимыми для нормальной организации трудовых процессов ведения нормативного хозяйства системы управления. Нормативнометодические документы подразделяются на следующие группы: нормативносправочные определяют нормы времени управленческих действий задания на конкретный период времени инструкции вышестоящих организаций или органов власти;...