Работа с графикой в среде Borland C++ Builder

Разработка приложений для работы с графикой в Borland C++ Builder. Вывод изображения на экран, изменение цвета и толщины линии контура, перемещение объекта по экрану, получение нового объекта вычитанием двух существующих. Основные обработчики событий.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 28.03.2012
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Контрольная работа

Работа с графикой в среде Borland C++ Builder

Тема: Работа с графикой в среде Borland C++ Builder.

Цель: Формирование навыков разработки приложений для работы с графикой в Borland C++ Builder.

Задание: Класс "Цветной заполненный сектор". Действия над объектами: вывод изображения на экран, изменение цвета и толщины линии контура, перемещение объекта по экрану, получение нового объекта вычитанием двух существующих.

1. Перечислить все компоненты, которые использовались при выполнении задания и кратко описать их назначение

TLabel - для вывода надписей (подписи назначений полей ввода).

TSpinEdit - компонент для ввода числовых значений (уровни RGB-каналов цветности, радиуса, толщины).

TSpeedButton - кнопки, используемые для выполнения определенных операций.

TBitMap - компонент для работы с изображениями. В данном случае мы используем Canvas данного компонента для вывода цветных заполненных секторов.

TGroupBox - стандартный элемента управления Windows, использующийся для группировки элементов управления (на нем расположены TLabel, TSpinEdit, TSpeedButton).

2. Перечислить все обработчики событий, которые использовались в вашей программе и описать их действия

Show - обработчик события показа формы.

MouseDown - обработчик события нажатия кнопки мыши на объекте.

MouseUp - обработчик события отжатия (отпускания) кнопки мыши на объекте.

Click - обработчик события нажатия кнопки.

Change - обработчик события изменения числовых параметров сектора (цветовой составляющей, радиуса, толщины линии контура).

3. Окно формы на этапе проектирования

4. Окно формы на этапе выполнения

5. Листинг приложения (достаточно только тех функций, в которых есть ваши изменения кода)

Файл PiePaint.h - добавлено описание класса TCircObj.

class TCircObj

{ public:

void init (int radius, int width, TPoint start_angle, TPoint stop_angle, TColor color_print, TColor color_line);

void set_centre (int x, int y);

void paint (TCanvas *canvas_paint);

bool get_created (void);

bool get_fixed (void);

void set_fixed (void);

TCircObj(); // конструктор класса

private:

TPoint centre; // координаты центра сектора

int radius; // радиус сектора (в точках)

int width; // толщина линии (в точках)

TPoint start_angle; // начальный угол сектора

TPoint stop_angle; // конечный угол сектора

TColor color_print; // цвет сектора

TColor color_line; // цвет линии

bool created; // флаг создания объекта

bool fixed; // флаг фиксации объекта

};

Файл PiePaint.cpp - методы класса TCircObj

// конструктор - инициализация нулями

TCircObj::TCircObj()

{

this->centre.x = 0;

this->centre.y = 0;

this->radius = 0;

this->start_angle.x = -1;

this->start_angle.y = 1;

this->stop_angle.x = 1;

this->stop_angle.y = 1;

this->color_print = clBlack;

this->created = false;

this->fixed = false;

}

// процедура инициализации при создании

void TCircObj::init (int radius, int width, TPoint start_angle, TPoint stop_angle, TColor color_print, TColor color_line)

{ // установка радиуса сектора

this->radius = radius;

// установка углов рисования сектора

this->start_angle.x = start_angle.x;

this->start_angle.y = start_angle.y;

this->stop_angle.x = stop_angle.x;

this->stop_angle.y = stop_angle.y;

// установка цвета рисования сектора

this->color_print = color_print;

// установка толщины линии контура

this->width = width;

// установка цвета рисования контура

this->color_line = color_line;

// изначально объект "свободный"

this->fixed = false;

// создаем объект

this->created = true;

}

// процедура установки центра рисования сектора

void TCircObj::set_centre (int x, int y)

{

this->centre.x += x;

this->centre.y += y;

}

// процедура определения флага создания

bool TCircObj::get_created (void)

{

return this->created;

}

// процедура определения флага фиксации объекта

bool TCircObj::get_fixed (void)

{

return this->fixed;

}

// процедура установки флага фиксации объекта

void TCircObj::set_fixed (void)

{

this->fixed = true;

}

// рисование

void TCircObj::paint (TCanvas *canvas_paint)

{

// установка цвета сектора

canvas_paint->Brush->Color = this->color_print;

// установка параметров контура

canvas_paint->Pen->Color = this->color_line;

canvas_paint->Pen->Width = this->width;

// прорисовка с учетом сгенерированных углов

canvas_paint->Pie(this->centre.x,

this->centre.y,

this->centre.x+this->radius*2,

this->centre.y+this->radius*2,

this->centre.x+this->radius+this->start_angle.x,

this->centre.y+this->radius+this->start_angle.y,

this->centre.x+this->radius+this->stop_angle.x,

this->centre.y+this->radius+this->stop_angle.y);

}

Файл PiePaint.cpp - обработчики событий.

void __fastcall TForm1::PaintBox_PaintMouseDown(TObject *Sender,

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

{

if (Button == mbLeft &&

PaintBox_front->Canvas->Pixels[X][Y] != backgroundcolor &&

PaintBox_front->Canvas->Pixels[X][Y] != 0)

{

drag = 1;

start.x = X;

start.y = Y;

}

}

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

void __fastcall TForm1::PaintBox_PaintMouseUp(TObject *Sender,

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

{

if (Button == mbLeft && drag == 1)

{

drag = 0;

stop.x = X;

stop.y = Y;

int i=0;

while (CircObjMass[i] != NULL && CircObjMass[i]->get_fixed() != false)

{i++;}

CircObjMass[i]->set_centre(stop.x-start.x,stop.y-start.y);

global_repaint = 1;

PaintBox_PaintClick(NULL);

}

if (Button == mbRight &&

PaintBox_front->Canvas->Pixels[X][Y] != backgroundcolor &&

PaintBox_front->Canvas->Pixels[X][Y] != 0)

{int i=0;

while (CircObjMass[i] != NULL && CircObjMass[i]->get_fixed() != false)

{i++;}

if (i != N)

{CircObjMass[i]->set_fixed();

SpeedButtonAdd->Enabled = true;

global_repaint = 2;

PaintBox_PaintClick(NULL);

}

}

}

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

void __fastcall TForm1::PaintBoxTestClick(TObject *Sender)

{ // предварительная очистка

PaintBoxTest->Canvas->Brush->Color = clBtnFace;

PaintBoxTest->Canvas->FillRect (Canvas->ClipRect );

// установка цвета

PaintBoxTest->Canvas->Brush->Color = (TColor)RGB(CSpinEditRed->Value, CSpinEditGreen->Value, CSpinEditBlue->Value);

// установка параметров контура

PaintBoxTest->Canvas->Pen->Color = (TColor)RGB(CSpinEditRedL->Value, CSpinEditGreenL->Value, CSpinEditBlueL->Value);

PaintBoxTest->Canvas->Pen->Width = CSpinEditLine->Value;

// прорисовка с учетом сгенерированных углов

PaintBoxTest->Canvas->Pie(0,0,CSpinEditRadius->Value*2,CSpinEditRadius->Value*2,

CSpinEditRadius->Value+generate_start.x,

CSpinEditRadius->Value+generate_start.y,

CSpinEditRadius->Value+generate_stop.x,

CSpinEditRadius->Value+generate_stop.y);

}

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

void __fastcall TForm1::Button4Click(TObject *Sender)

{

randomize();

generate_start.x = random (CSpinEditRadius->Value-5);

if (random(200)-100 < 0)

{generate_start.x = -generate_start.x;}

generate_start.y = random (CSpinEditRadius->Value);

if (random(200)-100 < 0)

{generate_start.y = -generate_start.y;}

randomize();

generate_stop.x = random (CSpinEditRadius->Value+5);

if (random(400)-200 < 0)

{generate_stop.x = -generate_stop.x;}

generate_stop.y = random (CSpinEditRadius->Value);

if (random(400)-200 < 0)

{generate_stop.y = -generate_stop.y;}

PaintBoxTestClick(PaintBoxTest);

}

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

void __fastcall TForm1::CSpinEditRadiusChange(TObject *Sender)

{

PaintBoxTestClick(PaintBoxTest);

}

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

void __fastcall TForm1::CSpinEditRedChange(TObject *Sender)

{

PaintBoxTestClick(PaintBoxTest);

}

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

void __fastcall TForm1::SpeedButtonAddClick(TObject *Sender)

{

int i=0;

while (CircObjMass[i] != NULL)

{i++;}

CircObjMass[i] = new TCircObj();

CircObjMass[i]->init(CSpinEditRadius->Value, CSpinEditLine->Value, generate_start, generate_stop,

(TColor)RGB(CSpinEditRed->Value, CSpinEditGreen->Value, CSpinEditBlue->Value),

(TColor)RGB(CSpinEditRedL->Value, CSpinEditGreenL->Value, CSpinEditBlueL->Value));

i++;

if (i == N)

{GroupBoxNew->Visible = false;}

SpeedButtonAdd->Enabled = false;

//

PaintBox_PaintClick(NULL);

}

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

void __fastcall TForm1::PaintBox_PaintClick(TObject *Sender)

{

move.x = X_;

move.y = Y_;

PaintBox_front->Canvas->Pen->Color = clBlack;

PaintBox_front->Canvas->Pen->Width = 1;

PatBlt(PaintBox_front->Canvas->Handle, 0, 0, PaintBox_front->Width, PaintBox_front->Height, clBtnFace);

if (global_repaint == 2)

{ PaintBox_back->Canvas->Pen->Color = clBlack;

PaintBox_back->Canvas->Pen->Width = 1;

PatBlt(PaintBox_back->Canvas->Handle, 0, 0, PaintBox_back->Width, PaintBox_back->Height, clBtnFace);

}

for (int i=0; i<N; i++)

{ if (CircObjMass[i] != NULL && CircObjMass[i]->get_fixed() == true && global_repaint == 2)

{CircObjMass[i]->paint(Form1->PaintBox_front->Canvas);

for (int j=0; j<Form1->PaintBox_front->Height; j++)

{for (int k=0; k<Form1->PaintBox_front->Width; k++)

{Form1->PaintBox_back->Canvas->Pixels[j][k] =

Form1->PaintBox_back->Canvas->Pixels[j][k]+

Form1->PaintBox_front->Canvas->Pixels[j][k];

}

}

PaintBox_front->Canvas->Pen->Color = clBlack;

PaintBox_front->Canvas->Pen->Width = 1;

PatBlt(PaintBox_front->Canvas->Handle, 0, 0, PaintBox_front->Width, PaintBox_front->Height, clBtnFace);

}

if (CircObjMass[i] != NULL && CircObjMass[i]->get_fixed() != true)

{CircObjMass[i]->paint(Form1->PaintBox_front->Canvas);}

}

global_repaint = 1;

}

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

void __fastcall TForm1::FormShow(TObject *Sender)

{ PatBlt(PaintBox_back->Canvas->Handle, 0, 0, PaintBox_back->Width, PaintBox_back->Height, clBtnFace);

PatBlt(PaintBox_front->Canvas->Handle, 0, 0, PaintBox_front->Width, PaintBox_front->Height, clBtnFace);

}

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

приложение borland duilder программа

5. Выводы по проделанной работе

Сформировали общие навыки разработки приложений для работы с графикой в Borland C++ Builder.

Размещено на Allbest.ru


Подобные документы

  • Работа в Borland C++ Builder. Среда разработки и компоненты C++ Builder. Свойства компонентов. Менеджер проектов. Создание приложений в C++ Builder. Выбор компонентов для групповых операций. Работа с базами данных в Borland C++ Builder.

    курсовая работа [35,8 K], добавлен 11.06.2007

  • Разработка программного продукта (лабиринт с входом и выходом, состоящий из комнат) в среде разработки Borland C++ Builder 6. Требования пользователя к программному изделию. Программные ограничения, совместимость. Основные процессы разработки программы.

    курсовая работа [819,9 K], добавлен 14.01.2013

  • Реализация программного кода "Organizer 1.0". Разработка приложений баз данных с помощью Borland C++ Builder 6. Компоненты системы программирования для работы по технологии InterBase. Программный код и интерфейс "Organizer 1.0", структура приложения.

    курсовая работа [466,9 K], добавлен 28.07.2009

  • Ігрові програми та BORLAND C++ BUILDER, застосованна для їх створення. Основні прийоми, застосовувані при проектуванні користувальницького інтерфейсу. Середовище розробки. Приклад використання видимих і невидимих компонентів. Прототип оброблювача подій.

    курсовая работа [611,9 K], добавлен 24.03.2009

  • Засоби організації збереження і обробки даних для інтерфейсних програм. Borland C++ Builder - засіб швидкої розробки програм, що дозволяє створювати їх мовою C++, використовуючи середовище розробки і бібліотеку компонентів Delphi. Прийоми проектування.

    курсовая работа [110,5 K], добавлен 28.03.2009

  • Динамика движения материальной точки. Разработка программы, моделирующей траектории полета снаряда при стрельбе из пушки под заданным углом к горизонту. Ее структурная схема, системные требования к ней. Создание приложения в среде Borland C++Builder.

    курсовая работа [3,2 M], добавлен 10.06.2014

  • C++ Builder - SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель и палитру компонентов. Свойства атрибутов компонента, определяющие его внешний вид и поведение. События, методы и VCL компоненты в среде C++ Builder.

    курсовая работа [225,9 K], добавлен 12.02.2009

  • Разработка программы для работы с базой данных "Библиотека" в среде Borland C++Builder 6 на языке программирования C++ с использованием визуальных средств. Структура информации, подключение к ней и ее отображение. Описание пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 19.05.2014

  • Общие сведения по использованию базы данных. Описание предметной области программы. Выбор средств программирования для разработки приложений, технология работы. Оценка автоматизированного рабочего места продавца компакт-дисков в среде Borland C++ Builder.

    курсовая работа [1,3 M], добавлен 24.12.2010

  • Описание предметной области. Контроль и методы доступа. Работа с графикой в С++ Builder. Программирование игры "Воздушный бой" с использованием основных принципов объектно-ориентированного программирования. Принципы работы конструкторов и деструкторов.

    курсовая работа [901,0 K], добавлен 31.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.