Студопедия — Исходный код. Кафедра информационных технологий
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Исходный код. Кафедра информационных технологий

Кафедра информационных технологий

И прикладной математики

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

 

к лабораторной работе №7 по дисциплине

«Программирование и алгоритмизация»

 

Группа: 3АУ-39Д

Студент: Чепиков И.С._______

Преподаватель: Артамкин С.Н. _______

 

 


Оглавление

Исходный код. 3

Диаграмма классов. 5

 


Исходный код

proxy.cpp

 

#include <vcl.h>

#include "main.h"

#include "canvas.h"

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

// Subject. Абстрактный класс - объявляет интерфейс.

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

class Graphic {

public:

virtual void CreateImg (AnsiString path) = 0;

virtual void ChangeSize (int h, int w) = 0;

virtual void DeleteImg () = 0;

};

 

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

// Real Subject. Реализует интерфейс Graphic для отображения изображений:

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

class Image: public Graphic {

public:

void CreateImg (AnsiString path)

{

gBitmap = new Graphics::TBitmap();

gBitmap->LoadFromFile(path);

TRect tRect(0,0,Form2->Width, Form2->Height);

Form2->Canvas->StretchDraw(tRect,gBitmap);

};

 

inline void ChangeSize (int w, int h)

{

TRect tRect(0,0,w,h);

Form2->Repaint();

Form2->Canvas->StretchDraw(tRect,gBitmap);

};

 

void DeleteImg ()

{

delete this->gBitmap;

gBitmap = NULL;

Form2->Refresh();

};

 

bool GetStat ()

{

if (this->gBitmap)

return true;

else

return false;

}

 

private:

Graphics::TBitmap* gBitmap;

};

 

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

// Proxy. Имеет тот же интерфейс, что и Image:

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

class ImageProxy: public Graphic {

public:

void CreateImg (AnsiString path)

{

img.CreateImg(path);

};

void ChangeSize (int h, int w)

{

img.ChangeSize(h, w);

};

void DeleteImg ()

{

img.DeleteImg();

};

 

bool GetStat ()

{

img.GetStat();

}

 

private:

Image img; // позволяет заместителю обратиться к реальному субъекту

};

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

 

main.cpp

 

...

#include "proxy.cpp"

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

TForm1 *Form1;

ImageProxy img_p;

...

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

void __fastcall TForm1::OpenClick(TObject *Sender)

{

if (img_p.GetStat())

{

img_p.DeleteImg();

}

 

if (OpenDialog1->Execute())

{

img_p.CreateImg (OpenDialog1->FileName);

}

}

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

void __fastcall TForm1::CloseClick(TObject *Sender)

{

if (img_p.GetStat())

{

img_p.DeleteImg();

}

}

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

 

canvas.cpp

 

...

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

void __fastcall TForm2::FormResize(TObject *Sender)

{

img_p.ChangeSize(Form2->Width, Form2->Height);

}

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




<== предыдущая лекция | следующая лекция ==>
Исходный код | 

Дата добавления: 2015-06-15; просмотров: 348. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

Понятие метода в психологии. Классификация методов психологии и их характеристика Метод – это путь, способ познания, посредством которого познается предмет науки (С...

САНИТАРНО-МИКРОБИОЛОГИЧЕСКОЕ ИССЛЕДОВАНИЕ ВОДЫ, ВОЗДУХА И ПОЧВЫ Цель занятия.Ознакомить студентов с основными методами и показателями...

Меры безопасности при обращении с оружием и боеприпасами 64. Получение (сдача) оружия и боеприпасов для проведения стрельб осуществляется в установленном порядке[1]. 65. Безопасность при проведении стрельб обеспечивается...

Весы настольные циферблатные Весы настольные циферблатные РН-10Ц13 (рис.3.1) выпускаются с наибольшими пределами взвешивания 2...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия