Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

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

Тип: контрольная работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Разработка приложений для работы с графикой в Borland C++ Builder. Вывод изображения на экран, изменение цвета и толщины линии контура, перемещение объекта по экрану, получение нового объекта вычитанием двух существующих. Основные обработчики событий.
Краткое сожержание материала:

Размещено на

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

Работа с графикой в среде 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, CSpinEditGre...

Другие файлы:

Borland C++Builder. Освой самостоятельно
Книга "Borland C++Builder. Освой самостоятельно" К. Рейсдорфа и К. Хендерсона является практическим курсом программирования в C++Builder - новой среде...

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

Проrраммирование в среде Borland C++ Builder с математическими библиотеками MAТLAВ С/С++
Данная книга посвящена изложению вопросов совместного использования богатой библиотеки визуальных компонент Borland С++ Builder и возможностей языка С...

Borland C++ Builder. Энциклопедия пользователя
Книга известнейшего автора Чарли Калверта Borland C++ Builder Энциклопедия пользователя посвящена новой среде визуальной разработки приложений под Win...

Самоучитель C++ Builder
Книга является руководством по программированию в среде Borland C++ Builder. В ней рассматривается весь процесс разработки программы - от компоновки д...