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 -


 

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

39388. Интегрирование дифференциальных уравнений движения материальной точки, находящейся под действием постоянных сил 130 KB
  €œИнтегрирование дифференциальных уравнений движения материальной точки находящейся под действием постоянных сил€. Лыжник от точки A до точки B движется τ с. По заданным параметрам движения точки определить угол α и дальность полёта d. Пусть масса точки равна m тогда составим уравнение движения точки на участке AB.
39389. Исследование колебательного движения материальной точки 61 KB
  Дано: Найти: уравнение движения груза D. Решение 1 Находим приведенную жесткость пружин: Для определения fсm составим уравнение соответствующее состоянию покоя груза D на наклонной плоскости Дифференциальное уравнение движения груза примет вид Постоянные С1 и С2 определяем из начального условия: при t=0; x0=fcm; Уравнение движения груза имеет следующий вид: Найдем числовые значения входящих в уравнение величин Следовательно уравнение движения груза D: Ответ:.
39390. Курсовая работа по информатике 498 KB
  Mathcad система компьютерной алгебры из класса систем автоматизированного проектирования ориентированная на подготовку интерактивных документов с вычислениями и визуальным сопровождением отличается легкостью использования и применения для коллективной работы. Выполнить исследование нелинейного уравнения вида fx=0 отыскать корни и экстремумы с помощью программ Excel и Mathcad. Решить это же нелинейное уравнение с помощью...
39391. Головний судновий двигун 6S70 MC-C-TII (Ne=18623 кВт, n=91 хв-1) 2.93 MB
  Опис конструкції двигуна його вузлів деталей та систем що його обслуговують. Вимоги які висувають до двигуна даного типу його елементів і систем. Загальна компоновка двигуна. Загальна конструктивна схема побудови остова двигуна.
39392. Изучение системы станционной и поездной радиосвязи 1.04 MB
  Назначение и виды станционной радиосвязи СРС. Организация связи списчиков вагонов. Расчет станционной радиосвязи.
39393. Частотомер c аналоговой индикацией 537.24 KB
  Аналитический расчет печатной платы. Расчет топологических характеристик печатной платы. Чертеж печатной платы. Анализ электрической принципиальной схемы проводиться для выявления электрорадиоэлементов расположенных на печатной плате и вне ее.
39394. Стабилизатор напряжения и тока 481.5 KB
  Расчет коэффициентов вырубки и раскроя. Технические требования к изделию Номинальное входное напряжение В 220 Входное напряжение питания В 18 Номинальная выходная мощность Вт 59 Коэффициент сглаживания пульсации дБ 30 Коэффициент готовности по ГОСТ 27....
39395. Расчет автооператорной линии для нанесения двухслойного покрытия медь-никель стальных деталей на подвеске 44.62 KB
  Рассчитать и скомпоновать автооператорную линию для нанесения двухслойного покрытия медь-никель стальных деталей на подвеске.
39396. Автоматизація технологічних процесів сільськогосподарського виробництва 66.57 KB
  Розрахунковий термін окупності відповідає нормативному, що дає право твердити про ефективність запропонованого проекту.