Разработка графического редактора

Разработка программы для создания, просмотра и сохранения изображений. Реализация функции рисования различных фигур с заливкой и без заливки, функции очистки рабочего пространства и отмены последних действий. Обоснование выбранных методов и алгоритмов.

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

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

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

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

Дисциплина: Конструирование программ и языки программирования

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту

на тему РАЗРАБОТКА ГРАФИЧЕСКОГО РЕДАКТОРА

  • СОДЕРЖАНИЕ
  • ВВЕДЕНИЕ
  • 1. ОБЗОР МЕТОДОВ И АЛГОРИТМОВ РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ
  • 2. ОБОСНОВАНИЕ ВЫБРАННЫХ МЕТОДОВ И АЛГОРИТМОВ
  • 3. ОПИСАНИЕ ПРОГРАММЫ ДЛЯ ПРОГРАММИСТА

3.1 Класс CShape - базовый абстрактный класс фигуры

3.2 Класс контейнер shapes - класс контейнер для фигур

3.3 Класс CLine : public CShape. Класс линии

3.4 Класс CRect : public CLine. Класс прямоугольника

3.5 Класс CEllipse : public CLine. Класс эллипса

3.6 Класс CTriangle : public CLine. Класс треугольника

3.7 Класс CRound : public CLine. Класс круга

3.8 Класс CBezier : public CShape. Класс линии Безье

  • 4. ОПИСАНИЕ АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ
  • 4.1 Метод System::Void bRect_Click() - Нажатие кнопки прямоугольника
  • 4.2 Метод System::Void pictureBox1_MouseDown
  • 4.3 Метод System::Void pictureBox1_MouseDown
  • 4.4 Метод System::Void Form1_Load() - Загрузка формы
  • 4.5 Метод System::Void Form1_FormClosed() - Закрытие формы
  • 4.6 Метод shapes * shapes::AddS(CShape *s) - Добавление элемента в список
  • 4.7 Метод void CTriangle::Draw - Прорисовка треугольника
  • 4.8 Метод System::Void undoToolStripMenuItem_Click() Отмена последнего действия
  • ЗАКЛЮЧЕНИЕ
  • ЛИТЕРАТУРА
  • ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

C++- компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником - языком C, - наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ - как бесплатных, так и коммерческих.

В данной курсовой работе использовалась среда программирования Microsoft Visual Studio Team System 2008, являющаяся одним из мощнейших средств по разработке современных приложений. При разработке приложения учитывались особенности программирования в данной среде, а именно создавался проект CLR Windows Forms Application.

1. ОБЗОР МЕТОДОВ И АЛГОРИТМОВ РЕШЕНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ

Перед тем как рисовать линии и фигуры, отображать текст, выводить изображения и управлять ими, необходимо создать объект Graphics. Объект Graphics представляет поверхность рисования GDI+ и является объектом, который используется для создания графических изображений.

Ниже представлены два этапа работы с графикой.

1. Создание объекта Graphics.

2. Использование объекта Graphics для рисования линий и фигур, отображения текста или изображения и управления ими.

После создания объекта Graphics его можно использовать для рисования линий и фигур, отображения текста или изображения и управления ими. Ниже представлены основные объекты, используемые с объектом Graphics.

1. Класс Pen -- служит для рисования линий, контуров и отрисовки других геометрических объектов.

2. Класс Brush -- служит для заливки областей, например фигур, изображений или текста.

3. Класс Font -- содержит описание фигур, которые должны использоваться при отображении текста.

4. Структура Color -- содержит различные цвета.

2. ОБОСНОВАНИЕ ВЫБРАННЫХ МЕТОДОВ И АЛГОРИТМОВ

При создании приложения использовался выше описанный метод прорисовки объектов на форме. Также для управления прорисовки объектов на форме с помощью мыши был продуман свой собственный метод, а именно при нажатии кнопки мыши запоминается первая координата курсора, при отпускании кнопки, по следующей координате прорисовывается объект.

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

3. ОПИСАНИЕ ПРОГРАММЫ ДЛЯ ПРОГРАММИСТА

Рисунок 3.1 Диаграмма классов

3.1 Класс CShape - базовый абстрактный класс фигуры

Таблица 3.1 Поля класса CShape

Поле

Тип

Описание

color1

int

Код цвета в RGB

color2

int

Код цвета в RGB для заливки

filled

bool

Заливка

x

float *

Указатель на массив координат по горизонтали

y

float *

Указатель на массив координат по вертикали

Таблица 3.2 Методы класса CShape

Метод класса

Тип

Описание

CShape()

-

Конструктор класса CShape

~CShape()

-

Деструктор

virtual Draw(PictureBox^ picbox) = 0

void

Чисто виртуальный метод прорисовки фигуры

virtual SetPoint(unsigned int i, float X, float Y)

void

Виртуальный метод добавления точки в массивы координат

SetFilled(bool f)

void

Установка свойства заполнения фигуры

SetColor(int i, Color col)

void

Установка цвета

virtual New() = 0

CShape *

Чисто виртуальный метод выделения памяти для фигуры

3.2 Класс контейнер shapes - класс контейнер для фигур

Таблица 3.3 Поля класса-контейнера shapes

Поле

Тип

Описание

next

shapes *

Указатель на следующий элемент в списке

prev

shapes *

Указатель на предыдущий элемент в списке

S

CShape *

Указатель на класс CShape

Таблица 3.4 Метода класса-контейнера shapes

Метод класса

Тип

Описание

shapes()

-

Конструктор класса shapes

AddS(CShape *s)

shapes *

Добавление элемента списка

DelS()

shapes *

Удаление элемента списка

Inc()

shapes *

Переход на следующий элемент списка

Dec()

shapes *

Переход на предыдущий элемент списка

Redraw(PictureBox^ picbox)

void

Перерисовка фигуры

3.3 Класс CLine : public CShape. Класс линии

Таблица 3.5 Методы класса CLine

Метод класса

Тип

Описание

CLine()

-

Конструктор класса CLine

Draw(PictureBox^ picbox)

void

Прорисовка линии

New()

CShape *

Выделения памяти для линии

3.4 Класс CRect : public CLine. Класс прямоугольника

Таблица 3.6 Методы класса CRect

Метод класса

Тип

Описание

Draw(PictureBox^ picbox)

void

Прорисовка прямоугольника

New()

CShape *

Выделения памяти для прямоугольника

3.5 Класс CEllipse : public CLine. Класс эллипса

Таблица 3.7 Методы класса CEllipse

Метод класса

Тип

Описание

Draw(PictureBox^ picbox)

void

Прорисовка эллипса

New()

CShape *

Выделения памяти для эллипса

3.6 Класс CTriangle : public CLine. Класс треугольника

Таблица 3.8 Методы класса CTriangle

Метод класса

Тип

Описание

Draw(PictureBox^ picbox)

void

Прорисовка треугольника

New()

CShape *

Выделения памяти для треугольника

3.7 Класс CRound : public CLine. Класс круга

Таблица 3.9 Методы класса CRound

Метод класса

Тип

Описание

Draw(PictureBox picbox)

void

Прорисовка круга

New()

CShape *

Выделения памяти для круга

3.8 Класс CBezier : public CShape. Класс линии Безье

Таблица 3.10 Поля класса CBezier

Поле

Тип

Описание

count

int

Счётчик нажатий кнопки

Таблица 3.11 Методы класса CBezier

Метод класса

Тип

Описание

CBezier()

-

Конструктор класса CBezier

SetPoint(unsigned int i, float X, float Y)

void

Переопределённый метод добавления точки в массивы координат

Draw(PictureBox^ picbox)

void

Прорисовка линии Безье

New()

CShape *

Выделения памяти для линии Безье

4. ОПИСАНИЕ АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧИ

4.1 Метод System::Void bRect_Click() - Нажатие кнопки прямоугольника

1. Начало.

2. Выделение памяти на CRect

3. Присваивание указателя CRect указателю CShape

4. Установка флага заливки прямоугольника.

5. Установка цвета рамки и заливки прямоугольника.

6. Конец.

4.2 Метод System::Void pictureBox1_MouseDown() - Событие на нажатие кнопки

1. Начало.

2. Установка первой координаты фигуры

3. Конец.

4.3 Метод System::Void pictureBox1_MouseDown() - Событие на нажатие кнопки

1. Начало.

2. Установка следующей координаты фигуры

3. Выделение памяти под новый объект фигуры

4. Добавление фигуры в список

5. Прорисовка новой фигуры

6. Конец.

4.4 Метод System::Void Form1_Load() - Загрузка формы

1. Начало.

2. Выделение памяти для линии(по умолчанию)

3. Инициализация списка для фигур

4. Устанавливаем цвет линии

5. Создаём Bitmap, на котором будут производиться все действия

6. Конец.

4.5 Метод System::Void Form1_FormClosed() - Закрытие формы

Рисунок 4.1 Блок-схема алгоритма при закрытии формы

4.6 Метод shapes * shapes::AddS(CShape *s) - Добавление элемента в список

Рисунок 4.2 Блок-схема алгоритма добавления элемента в список

изображение сохранение заливка пространство

4.7 Метод void CTriangle::Draw(PictureBox^ picbox) - Прорисовка треугольника

Рисунок 4.3 Блок-схема алгоритма рисования треугольника

4.8 Метод System::Void undoToolStripMenuItem_Click() Отмена последнего действия

Рисунок 4.4 Блок-схема алгоритма отмены последних действий

ЗАКЛЮЧЕНИЕ

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

Программный продукт выполнен в среде программирования Microsoft Visual Studio Team System 2008, с использованием проекта CLR Windows Forms Application.

Для дальнейшего расширения программы возможна разработка таких функций приложения как: добавление текста в изображение, добавление толщины линий и т.д.

ЛИТЕРАТУРА

1. Харви М. Дейтел, Пол Дж. Дейтел - Как программировать на C++ - 2008

2. Петцольд - Программирование Для Microsoft Windows На С#. В 2-х Томах. Том 1 - 2002

3. Петцольд - Программирование Для Microsoft Windows На С#. В 2-х Томах. Том 2 - 2002

4. Информационный портал: http://msdn.microsoft.com

5. Информационный портал: http://www.cyberguru.ru

ПРИЛОЖЕНИЯ

Приложение А - Листинг программы

//FIGURES.h

#ifndef FIGURES_H

#define FIGURES_H

#pragma once

using namespace System::Windows::Forms;

using namespace System::Drawing;

using namespace System::Drawing::Drawing2D;

class CShape

{

public:

virtual void Draw(PictureBox^ picbox) = 0;

virtual void SetPoint(unsigned int i, float X, float Y);

virtual CShape * New() = 0;

void SetFilled(bool f);

void SetColor(int i, Color col);

CShape();

~CShape();

protected:

int color1,color2;

bool filled;

float *x,*y;

};

class CLine : public CShape

{

public:

virtual void Draw(PictureBox^ picbox);

virtual CShape * New();

CLine();

};

class CRect : public CLine

{

public:

virtual void Draw(PictureBox^ picbox);

virtual CShape * New();

};

class CEllipse : public CLine

{

public:

virtual void Draw(PictureBox^ picbox);

virtual CShape * New();

};

class CTriangle : public CLine

{

public:

virtual void Draw(PictureBox^ picbox);

virtual CShape * New();

};

class CRound : public CLine

{

public:

virtual void Draw(PictureBox^ picbox);

virtual CShape * New();

};

class CBezier : public CShape

{

public:

virtual void Draw(PictureBox^ picbox);

CBezier();

virtual void SetPoint(unsigned int i, float X, float Y);

virtual CShape * New();

protected:

int count;

};

class shapes

{

public:

shapes();

shapes * AddS(CShape *s);

shapes * DelS();

shapes * Inc();

shapes * Dec();

void Redraw(PictureBox^ picbox);

private:

CShape *S;

shapes *next, *prev;

};

#endif

//FIGURES.cpp

#include "stdafx.h"

#include "FIGURES.h"

#include <math.h>

shapes::shapes()

{

prev = next = nullptr;

}

shapes * shapes::AddS(CShape *s)

{

shapes *t = new shapes;

this->S = s;

this->next = t;

t->next = nullptr;

t->prev = this;

return t;

}

shapes * shapes::DelS()

{

shapes *t,*d;

t = this->prev;

t->next = nullptr;

d = this;

delete d;

return t;

}

shapes * shapes::Inc()

{

return this->next;

}

shapes * shapes::Dec()

{

return this->prev;

}

void shapes::Redraw(System::Windows::Forms::PictureBox ^picbox)

{

S->Draw(picbox);

}

//

CShape::CShape()

{

filled = false;

}

CShape::~CShape()

{

delete []x;

delete []y;

}

void CShape::SetPoint(unsigned int i, float X, float Y)

{

x[i] = X;

y[i] = Y;

}

void CShape::SetFilled(bool f)

{

filled = f;

}

void CShape::SetColor(int i, Color col)

{

if(i) color2 = col.ToArgb();

else color1 = col.ToArgb();

}

//

CLine::CLine()

{

x = new float[2];

y = new float[2];

}

void CLine::Draw(PictureBox^ picbox)

{

Graphics^ g = Graphics::FromImage(picbox->Image);

Pen^ pen1 = gcnew Pen(Color::FromArgb(color1));

g->DrawLine(pen1,x[0],y[0],x[1],y[1]);

}

CShape * CLine::New()

{

CLine *L = new CLine;

L->SetColor(0,Color::FromArgb(color1));

L->SetColor(1,Color::FromArgb(color2));

L->SetFilled(filled);

L->SetPoint(0,x[0],y[0]);

L->SetPoint(1,x[1],y[1]);

return L;

}

//

void CRect::Draw(PictureBox^ picbox)

{

Graphics^ g = Graphics::FromImage(picbox->Image);

Pen^ pen1 = gcnew Pen(Color::FromArgb(color1));

SolidBrush^ brush1 = gcnew SolidBrush(Color::FromArgb(color2));

if (filled)

if (x[1]-x[0]>=0 && y[1]-y[0]>=0) g->FillRectangle(brush1,x[0],y[0],x[1]-x[0],y[1]-y[0]);

if (x[1]-x[0]<0 && y[1]-y[0]>=0) g->FillRectangle(brush1,x[1],y[0],x[0]-x[1],y[1]-y[0]);

if (x[1]-x[0]>=0 && y[1]-y[0]<0) g->FillRectangle(brush1,x[0],y[1],x[1]-x[0],y[0]-y[1]);

if (x[1]-x[0]<0 && y[1]-y[0]<0) g->FillRectangle(brush1,x[1],y[1],x[0]-x[1],y[0]-y[1]);

}

if (x[1]-x[0]>=0 && y[1]-y[0]>=0) g->DrawRectangle(pen1,x[0],y[0],x[1]-x[0],y[1]-y[0]);

if (x[1]-x[0]<0 && y[1]-y[0]>=0) g->DrawRectangle(pen1,x[1],y[0],x[0]-x[1],y[1]-y[0]);

if (x[1]-x[0]>=0 && y[1]-y[0]<0) g->DrawRectangle(pen1,x[0],y[1],x[1]-x[0],y[0]-y[1]);

if (x[1]-x[0]<0 && y[1]-y[0]<0) g->DrawRectangle(pen1,x[1],y[1],x[0]-x[1],y[0]-y[1]);

}

CShape * CRect::New()

{

CRect *R = new CRect;

R->SetColor(0,Color::FromArgb(color1));

R->SetColor(1,Color::FromArgb(color2));

R->SetFilled(filled);

R->SetPoint(0,x[0],y[0]);

R->SetPoint(1,x[1],y[1]);

return R;

}

//

void CEllipse::Draw(PictureBox^ picbox)

{

Graphics^ g = Graphics::FromImage(picbox->Image);

Pen^ pen1 = gcnew Pen(Color::FromArgb(color1));

SolidBrush^ brush1 = gcnew SolidBrush(Color::FromArgb(color2));

if (filled) g->FillEllipse(brush1,x[0],y[0],x[1]-x[0],y[1]-y[0]);

g->DrawEllipse(pen1,x[0],y[0],x[1]-x[0],y[1]-y[0]);

}

CShape * CEllipse::New()

{

CEllipse *E = new CEllipse;

E->SetColor(0,Color::FromArgb(color1));

E->SetColor(1,Color::FromArgb(color2));

E->SetFilled(filled);

E->SetPoint(0,x[0],y[0]);

E->SetPoint(1,x[1],y[1]);

return E;

}

//

void CTriangle::Draw(PictureBox^ picbox)

{

Graphics^ g = Graphics::FromImage(picbox->Image);

Pen^ pen1 = gcnew Pen(Color::FromArgb(color1));

SolidBrush^ brush1 = gcnew SolidBrush(Color::FromArgb(color2));

GraphicsPath^ gp = gcnew GraphicsPath();

gp->AddLine(x[0],y[1],x[0]+(x[1]-x[0])/2,y[0]);

gp->AddLine(x[0]+(x[1]-x[0])/2,y[0],x[1],y[1]);

Region^ reg = gcnew Region(gp);

if (filled) g->FillRegion(brush1,reg);

g->DrawLine(pen1,x[0],y[1],x[0]+(x[1]-x[0])/2,y[0]);

g->DrawLine(pen1,x[0]+(x[1]-x[0])/2,y[0],x[1],y[1]);

g->DrawLine(pen1,x[1],y[1],x[0],y[1]);

}

CShape * CTriangle::New()

{

CTriangle *T = new CTriangle;

T->SetColor(0,Color::FromArgb(color1));

T->SetColor(1,Color::FromArgb(color2));

T->SetFilled(filled);

T->SetPoint(0,x[0],y[0]);

T->SetPoint(1,x[1],y[1]);

return T;

}

//

void CRound::Draw(PictureBox^ picbox)

{

Graphics^ g = Graphics::FromImage(picbox->Image);

Pen^ pen1 = gcnew Pen(Color::FromArgb(color1));

SolidBrush^ brush1 = gcnew SolidBrush(Color::FromArgb(color2));

float R = sqrt((x[1]-x[0])*(x[1]-x[0])+(y[1]-y[0])*(y[1]-y[0]));

if(filled) g->FillEllipse(brush1,x[0]-R,y[0]-R,2*R,2*R);

g->DrawEllipse(pen1,x[0]-R,y[0]-R,2*R,2*R);

}

CShape * CRound::New()

{

CRound *Rn = new CRound;

Rn->SetColor(0,Color::FromArgb(color1));

Rn->SetColor(1,Color::FromArgb(color2));

Rn->SetFilled(filled);

Rn->SetPoint(0,x[0],y[0]);

Rn->SetPoint(1,x[1],y[1]);

return Rn;

}

//

CBezier::CBezier()

{

x = new float[4];

y = new float[4];

count = 0;

void CBezier::SetPoint(unsigned int i, float X, float Y)

if(i == 0)

if(count == 0)

for(int j=0;j<3;j++)

x[j] = X;

y[j] = Y;

else

x[3-count] = X;

y[3-count] = Y;

count++;

void CBezier::Draw(PictureBox^ picbox)

{

Graphics^ g = Graphics::FromImage(picbox->Image);

Pen^ pen1 = gcnew Pen(Color::FromArgb(color1));

if (count == 3)

g->DrawBezier(pen1,x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[3]);

count = 0;

CShape * CBezier::New()

CBezier *B = new CBezier;

B->SetColor(0,Color::FromArgb(color1));

B->SetColor(1,Color::FromArgb(color2));

B->SetFilled(filled);

B->SetPoint(0,x[0],y[0]);

B->SetPoint(1,x[1],y[1]);

B->SetPoint(2,x[2],y[2]);

B->SetPoint(3,x[3],y[3]);

return B;

//Form1.h

#include "stdafx.h"

#include "FIGURES.h"

#include "math.h"

#pragma once

shapes *beg, *end;

CShape *S1;

namespace Paint {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

/// <summary>

/// Summary for Form1

///

/// WARNING: If you change the name of this class, you will need to change the

/// 'Resource File Name' property for the managed resource compiler tool

/// associated with all .resx files this class depends on. Otherwise,

/// the designers will not be able to interact properly with localized

/// resources associated with this form.

/// </summary>

public ref class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

InitializeComponent();

//TODO: Add the constructor code here

protected:

/// <summary>

/// Clean up any resources being used.

/// </summary>

~Form1()

if (components)

delete components;

private: System::Windows::Forms::PictureBox^ pictureBox1;

private: System::Windows::Forms::Button^ bLine;

private: System::Windows::Forms::Button^ bRect;

private: System::Windows::Forms::Button^ bEllipse;

private: System::Windows::Forms::Button^ bTriangle;

private: System::Windows::Forms::Button^ bRound;

private: System::Windows::Forms::Button^ bColor1;

private: System::Windows::Forms::Button^ bColor2;

private: System::Windows::Forms::ColorDialog^ colorDialog1;

private: System::Windows::Forms::Button^ bBezier;

private: System::Windows::Forms::CheckBox^ checkBox1;

private: System::Windows::Forms::MenuStrip^ menuStrip1;

private: System::Windows::Forms::StatusStrip^ statusStrip1;

private: System: Windows:: Forms:: ToolStripStatusLabel^ toolStripStatusLabel1;

private: System:: Windows:: Forms:: ToolStripMenuItem^ toolStripMenuItem1;

private: System:: Windows:: Forms:: ToolStripMenuItem^ openToolStripMenuItem;

private: System:: Windows:: Forms:: ToolStripMenuItem^ saveToolStripMenuItem;

private: System:: Windows:: Forms:: ToolStripMenuItem^ exitToolStripMenuItem;

private: System:: Windows:: Forms:: ToolStripMenuItem^ toolStripMenuItem2;

private: System:: Windows:: Forms:: ToolStripMenuItem^ clearToolStripMenuItem;

private: System::Windows::Forms::OpenFileDialog^ openFileDialog1;

private: System::Windows::Forms::SaveFileDialog^ saveFileDialog1;

private: System::Windows::Forms::ToolStripMenuItem^ undoToolStripMenuItem;

private: System::ComponentModel::IContainer^ components;

protected:

private:

/// <summary>

/// Required designer variable.

/// </summary>

#pragma region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

void InitializeComponent(void)

System::ComponentModel::ComponentResourceManager^ resources = (gcnew System::ComponentModel::ComponentResourceManager(Form1::typeid));

this->pictureBox1 = (gcnew System::Windows::Forms::PictureBox());

this->bLine = (gcnew System::Windows::Forms::Button());

this->bRect = (gcnew System::Windows::Forms::Button());

this->bEllipse = (gcnew System::Windows::Forms::Button());

this->bTriangle = (gcnew System::Windows::Forms::Button());

this->colorDialog1 = (gcnew System::Windows::Forms::ColorDialog());

this->bRound = (gcnew System::Windows::Forms::Button());

this->bColor1 = (gcnew System::Windows::Forms::Button());

this->bColor2 = (gcnew System::Windows::Forms::Button());

this->bBezier = (gcnew System::Windows::Forms::Button());

this->checkBox1 = (gcnew System::Windows::Forms::CheckBox());

this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());

this->toolStripMenuItem1 = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->openToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->saveToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->exitToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->toolStripMenuItem2 = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->clearToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->undoToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());

this->statusStrip1 = (gcnew System::Windows::Forms::StatusStrip());

this->toolStripStatusLabel1 = (gcnew System::Windows::Forms::ToolStripStatusLabel());

this->openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog());

this->saveFileDialog1 = (gcnew System::Windows::Forms::SaveFileDialog());

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->BeginInit();

this->menuStrip1->SuspendLayout();

this->statusStrip1->SuspendLayout();

this->SuspendLayout();

// pictureBox1

this->pictureBox1->BackColor = System::Drawing::SystemColors::Window;

this->pictureBox1->BorderStyle = System::Windows::Forms::BorderStyle::FixedSingle;

this->pictureBox1->Cursor = System::Windows::Forms::Cursors::Cross;

this->pictureBox1->Location = System::Drawing::Point(12, 60);

this->pictureBox1->Name = L"pictureBox1";

this->pictureBox1->Size = System::Drawing::Size(803, 603);

this->pictureBox1->SizeMode = System::Windows::Forms::PictureBoxSizeMode::AutoSize;

this->pictureBox1->TabIndex = 1;

this->pictureBox1->TabStop = false;

this->pictureBox1->MouseMove + = gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::pictureBox1_MouseMove);

this->pictureBox1->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::pictureBox1_MouseDown);

this->pictureBox1->MouseUp += gcnew System::Windows::Forms::MouseEventHandler(this, &Form1::pictureBox1_MouseUp);

// bLine

this->bLine->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"bLine.BackgroundImage")));

this->bLine->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bLine->Location = System::Drawing::Point(12, 31);

this->bLine->Name = L"bLine";

this->bLine->Size = System::Drawing::Size(23, 23);

this->bLine->TabIndex = 4;

this->bLine->UseVisualStyleBackColor = true;

this->bLine->Click += gcnew System::EventHandler(this, &Form1::bLine_Click);

// bRect

this->bRect->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"bRect.BackgroundImage")));

this->bRect->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bRect->Location = System::Drawing::Point(41, 31);

this->bRect->Name = L"bRect";

this->bRect->Size = System::Drawing::Size(23, 23);

this->bRect->TabIndex = 5;

this->bRect->UseVisualStyleBackColor = true;

this->bRect->Click += gcnew System::EventHandler(this, &Form1::bRect_Click);

// bEllipse

this->bEllipse->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"bEllipse.BackgroundImage")));

this->bEllipse->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bEllipse->Location = System::Drawing::Point(70, 31);

this->bEllipse->Name = L"bEllipse";

this->bEllipse->Size = System::Drawing::Size(23, 23);

this->bEllipse->TabIndex = 6;

this->bEllipse->UseVisualStyleBackColor = true;

this->bEllipse->Click += gcnew System::EventHandler(this, &Form1::bEllipse_Click);

// bTriangle

this->bTriangle->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"bTriangle.BackgroundImage")));

this->bTriangle->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bTriangle->Location = System::Drawing::Point(128, 31);

this->bTriangle->Name = L"bTriangle";

this->bTriangle->Size = System::Drawing::Size(23, 23);

this->bTriangle->TabIndex = 7;

this->bTriangle->UseVisualStyleBackColor = true;

this->bTriangle->Click += gcnew System::EventHandler(this, &Form1::bTriangle_Click);

// bRound

this->bRound->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"bRound.BackgroundImage")));

this->bRound->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bRound->Location = System::Drawing::Point(99, 31);

this->bRound->Name = L"bRound";

this->bRound->Size = System::Drawing::Size(23, 23);

this->bRound->TabIndex = 8;

this->bRound->UseVisualStyleBackColor = true;

this->bRound->Click += gcnew System::EventHandler(this, &Form1::bRound_Click);

// bColor1

this->bColor1->BackColor = System::Drawing::Color::Black;

this->bColor1->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bColor1->Location = System::Drawing::Point(248, 31);

this->bColor1->Name = L"bColor1";

this->bColor1->Size = System::Drawing::Size(23, 23);

this->bColor1->TabIndex = 9;

this->bColor1->UseVisualStyleBackColor = false;

this->bColor1->Click += gcnew System::EventHandler(this, &Form1::bColor1_Click);

// bColor2

this->bColor2->BackColor = System::Drawing::Color::White;

this->bColor2->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bColor2->Location = System::Drawing::Point(277, 31);

this->bColor2->Name = L"bColor2";

this->bColor2->Size = System::Drawing::Size(23, 23);

this->bColor2->TabIndex = 10;

this->bColor2->UseVisualStyleBackColor = false;

this->bColor2->Click += gcnew System::EventHandler(this, &Form1::bColor2_Click);

// bBezier

this->bBezier->BackgroundImage = (cli::safe_cast<System::Drawing::Image^ >(resources->GetObject(L"bBezier.BackgroundImage")));

this->bBezier->FlatStyle = System::Windows::Forms::FlatStyle::Flat;

this->bBezier->Location = System::Drawing::Point(157, 31);

this->bBezier->Name = L"bBezier";

this->bBezier->Size = System::Drawing::Size(23, 23);

this->bBezier->TabIndex = 11;

this->bBezier->UseVisualStyleBackColor = true;

this->bBezier->Click += gcnew System::EventHandler(this, &Form1::bBezier_Click);

// checkBox1

this->checkBox1->AutoSize = true;

this->checkBox1->Location = System::Drawing::Point(306, 33);

this->checkBox1->Name = L"checkBox1";

this->checkBox1->Size = System::Drawing::Size(104, 21);

this->checkBox1->TabIndex = 12;

this->checkBox1->Text = L"С заливкой";

this->checkBox1->CheckedChanged += gcnew System::EventHandler(this, &Form1::checkBox1_CheckedChanged);

// menuStrip1

this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->toolStripMenuItem1,

this->toolStripMenuItem2});

this->menuStrip1->Location = System::Drawing::Point(0, 0);

this->menuStrip1->Name = L"menuStrip1";

this->menuStrip1->Size = System::Drawing::Size(823, 28);

this->menuStrip1->TabIndex = 13;

this->menuStrip1->Text = L"menuStrip1";

// toolStripMenuItem1

this->toolStripMenuItem1->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) {this->openToolStripMenuItem,

this->saveToolStripMenuItem, this->exitToolStripMenuItem});

this->toolStripMenuItem1->Name = L"toolStripMenuItem1";

this->toolStripMenuItem1->Size = System::Drawing::Size(57, 24);

this->toolStripMenuItem1->Text = L"Файл";

// openToolStripMenuItem

this->openToolStripMenuItem->Name = L"openToolStripMenuItem";

this->openToolStripMenuItem->ShortcutKeys = static_cast<System::Windows::Forms::Keys>((System::Windows::Forms::Keys::Control | System::Windows::Forms::Keys::O));

this->openToolStripMenuItem->Size = System::Drawing::Size(202, 24);

this->openToolStripMenuItem->Text = L"Открыть";

this->openToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::openToolStripMenuItem_Click);

// saveToolStripMenuItem

this->saveToolStripMenuItem->Name = L"saveToolStripMenuItem";

this->saveToolStripMenuItem->ShortcutKeys = static_cast<System::Windows::Forms::Keys>((System::Windows::Forms::Keys::Control | System::Windows::Forms::Keys::S));

this->saveToolStripMenuItem->Size = System::Drawing::Size(202, 24);

this->saveToolStripMenuItem->Text = L"Сохранить";

this->saveToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::saveToolStripMenuItem_Click);

// exitToolStripMenuItem

this->exitToolStripMenuItem->Name = L"exitToolStripMenuItem";

this->exitToolStripMenuItem->ShortcutKeys = static_cast<System::Windows::Forms::Keys>((System::Windows::Forms::Keys::Alt | System::Windows::Forms::Keys::F4));

this->exitToolStripMenuItem->Size = System::Drawing::Size(202, 24);

this->exitToolStripMenuItem->Text = L"Выход";

this->exitToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::exitToolStripMenuItem_Click);

// toolStripMenuItem2

this->toolStripMenuItem2->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->clearToolStripMenuItem,

this->undoToolStripMenuItem});

this->toolStripMenuItem2->Name = L"toolStripMenuItem2";

this->toolStripMenuItem2->Size = System::Drawing::Size(72, 24);

this->toolStripMenuItem2->Text = L"Правка";

// clearToolStripMenuItem

this->clearToolStripMenuItem->Name = L"clearToolStripMenuItem";

this->clearToolStripMenuItem->ShortcutKeys = static_cast<System::Windows::Forms::Keys>((System::Windows::Forms::Keys::Control | System::Windows::Forms::Keys::R));

this->clearToolStripMenuItem->Size = System::Drawing::Size(197, 24);

this->clearToolStripMenuItem->Text = L"Очистить";

this->clearToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::clearToolStripMenuItem_Click);

// undoToolStripMenuItem

this->undoToolStripMenuItem->Name = L"undoToolStripMenuItem";

this->undoToolStripMenuItem->ShortcutKeys = static_cast<System::Windows::Forms::Keys>((System::Windows::Forms::Keys::Control | System::Windows::Forms::Keys::Z));

this->undoToolStripMenuItem->Size = System::Drawing::Size(197, 24);

this->undoToolStripMenuItem->Text = L"Отменить";

this->undoToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::undoToolStripMenuItem_Click);

// statusStrip1

this->statusStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) {this->toolStripStatusLabel1});

this->statusStrip1->Location = System::Drawing::Point(0, 670);

this->statusStrip1->Name = L"statusStrip1";

this->statusStrip1->Size = System::Drawing::Size(823, 25);

this->statusStrip1->TabIndex = 14;

this->statusStrip1->Text = L"statusStrip1";

// toolStripStatusLabel1

this->toolStripStatusLabel1->Name = L"toolStripStatusLabel1";

this->toolStripStatusLabel1->Size = System::Drawing::Size(38, 20);

this->toolStripStatusLabel1->Text = L"(0;0)";

// openFileDialog1

this->openFileDialog1->FileName = L"openFileDialog1";

this->openFileDialog1->Filter = L"BMP|*.bmp|JPG|*.jpg;*.jpeg|GIF|*.gif|PNG|*.png|Any File|*.*";

// saveFileDialog1

this->saveFileDialog1->Filter = L"BMP|*.bmp|JPG|*.jpg|GIF|*.gif|PNG|*.png";

// Form1

this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

this->AutoScroll = true;

this->ClientSize = System::Drawing::Size(823, 695);

this->Controls->Add(this->statusStrip1);

this->Controls->Add(this->checkBox1);

this->Controls->Add(this->bBezier);

this->Controls->Add(this->bColor2);

this->Controls->Add(this->bColor1);

this->Controls->Add(this->bRound);

this->Controls->Add(this->bTriangle);

this->Controls->Add(this->bEllipse);

this->Controls->Add(this->bRect);

this->Controls->Add(this->bLine);

this->Controls->Add(this->pictureBox1);

this->Controls->Add(this->menuStrip1);

this->MainMenuStrip = this->menuStrip1;

this->Name = L"Form1";

this->Text = L"Графический редактор";

this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);

this->FormClosed += gcnew System::Windows::Forms::FormClosedEventHandler(this, &Form1::Form1_FormClosed);

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->pictureBox1))->EndInit();

this->menuStrip1->ResumeLayout(false);

this->menuStrip1->PerformLayout();

this->statusStrip1->ResumeLayout(false);

this->statusStrip1->PerformLayout();

this->ResumeLayout(false);

this->PerformLayout();

#pragma endregion

private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

CLine *L1 = new CLine;

beg = new shapes;

end = beg;

S1 = L1;

S1->SetColor(0,Form1::bColor1->BackColor);

Bitmap^ bmp = gcnew Bitmap(pictureBox1->Size.Width,pictureBox1->Size.Height);

pictureBox1->Image = bmp;

private: System::Void pictureBox1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {

S1->SetPoint(0,e->X,e->Y);

private: System::Void pictureBox1_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {

S1->SetPoint(1,e->X,e->Y);

CShape * S2 = S1->New();

end = end->AddS(S2);

S1->Draw(pictureBox1);

pictureBox1->Invalidate();

private: System::Void pictureBox1_MouseMove(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e) {

Form1::toolStripStatusLabel1->Text = "("+e->X.ToString()+";"+e->Y.ToString()+")";

private: System::Void bLine_Click(System::Object^ sender, System::EventArgs^ e) {

CLine *L1 = new CLine;

S1->SetColor(0,Form1::bColor1->BackColor);

private: System::Void bRect_Click(System::Object^ sender, System::EventArgs^ e) {

CRect *R1 = new CRect;

S1 = R1;

S1->SetFilled(Form1::checkBox1->Checked);

S1->SetColor(0,Form1::bColor1->BackColor);

S1->SetColor(1,Form1::bColor2->BackColor);

private: System::Void bEllipse_Click(System::Object^ sender, System::EventArgs^ e) {

CEllipse *E1 = new CEllipse;

S1 = E1;

S1->SetFilled(Form1::checkBox1->Checked);

S1->SetColor(0,Form1::bColor1->BackColor);

S1->SetColor(1,Form1::bColor2->BackColor);

private: System::Void bTriangle_Click(System::Object^ sender, System::EventArgs^ e) {

CTriangle *T1 = new CTriangle;

S1 = T1;

S1->SetFilled(Form1::checkBox1->Checked);

S1->SetColor(0,Form1::bColor1->BackColor);

S1->SetColor(1,Form1::bColor2->BackColor);

private: System::Void bRound_Click(System::Object^ sender, System::EventArgs^ e) {

CRound *Rn1 = new CRound;

S1 = Rn1;

S1->SetFilled(checkBox1->Checked);

S1->SetColor(0,bColor1->BackColor);

S1->SetColor(1,bColor2->BackColor);

private: System::Void bColor1_Click(System::Object^ sender, System::EventArgs^ e) {

colorDialog1->ShowDialog();

bColor1->BackColor = colorDialog1->Color;

S1->SetColor(0,bColor1->BackColor);

private: System::Void bColor2_Click(System::Object^ sender, System::EventArgs^ e) {

colorDialog1->ShowDialog();

bColor2->BackColor = colorDialog1->Color;

S1->SetColor(1,bColor2->BackColor);

private: System::Void checkBox1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {

S1->SetFilled(checkBox1->Checked);

private: System::Void bBezier_Click(System::Object^ sender, System::EventArgs^ e) {

CBezier *B1 = new CBezier;

S1 = B1;

S1->SetColor(0,bColor1->BackColor);

private: System::Void openToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

if(openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)

Image^ img1 = Image::FromFile(openFileDialog1->FileName);

Bitmap^ bmp = gcnew Bitmap(img1, pictureBox1->Width, pictureBox1->Height);

pictureBox1->Image = bmp;

Graphics^ g = Graphics::FromImage(pictureBox1->Image);

private: System::Void saveToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

if(saveFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)

String^ filename = saveFileDialog1->FileName;

String^ ext = filename->Remove(0,filename->Length - 3);

switch(ext[0])

case 'b': pictureBox1->Image->Save(filename, System::Drawing::Imaging::ImageFormat::Bmp);

break;

case 'j': pictureBox1->Image->Save(filename, System::Drawing::Imaging::ImageFormat::Jpeg);

break;

case 'g': pictureBox1->Image->Save(filename, System::Drawing::Imaging::ImageFormat::Gif);

break;

case 'p': pictureBox1->Image->Save(filename, System::Drawing::Imaging::ImageFormat::Png);

break;

default: break;

private: System::Void exitToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

Form1::Close();

private: System::Void clearToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

Bitmap^ bmp = gcnew Bitmap(pictureBox1->Size.Width-2,pictureBox1->Size.Height-2);

pictureBox1->Image = bmp;

Graphics^ g = Graphics::FromImage(pictureBox1->Image);

while(beg!=end)

end = end->DelS();

pictureBox1->Invalidate();

private: System::Void undoToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {

Bitmap^ bmp = gcnew Bitmap(pictureBox1->Size.Width-2,pictureBox1->Size.Height-2);

pictureBox1->Image = bmp;

Graphics^ g = Graphics::FromImage(pictureBox1->Image);

if(beg != end)

end = end->DelS();

shapes *t;

t = beg;

while(t->Inc()!= nullptr)

t->Redraw(pictureBox1);

t = t->Inc();

pictureBox1->Invalidate();

private: System::Void Form1_FormClosed(System::Object^ sender, System::Windows::Forms::FormClosedEventArgs^ e) {

while(beg!=end)

end = end->DelS();

delete beg;

}

};

}

Приложение Б. Скриншоты с результатами работы

При включении программы выводится на экран основное окно для работы с приложением.

Рисунок Б.1 Вид окна приложения

При нажатии пункта меню "Открыть Ctrl+O" появляется диалоговое окно, в котором вы можете выбрать изображение.

Рисунок Б.2 Диалоговое окно открытия изображения

После выбора файла изображение отображается в рабочей области окна.

Рисунок Б.3 Вид окна приложения с открытым изображением

При нажатии пункта меню "Сохранить Ctrl+S" появляется диалоговое окно, в котором вы можете сохранить изображение в различных форматах.

Рисунок Б.4 Вид диалогового окна сохранения изображения

При нажатии пункта меню "Очистить Ctrl+R" происходит очистка рабочей области

При нажатии на кнопки, обозначающие различные фигуры, вы можете рисовать эти фигуры.

Рисунок Б.5 Вид окна с нарисованными примитивами

При нажатии на кнопки, позволяющие выбрать цвет, открывается диалоговое окно выбора цвета.

Рисунок Б.6 Вид диалогового окна выбора цвета

Нажатием на галочку "С заливкой" вы можете рисовать фигуры с заливкой

Рисунок Б.7 Вид окна с нарисованными примитивами с заливкой

При нажатии пункта меню "Отменить Ctrl+Z" происходит отмена последнего действия, возможна отмена нескольких операций.

Рисунок Б.8 Вид окна до отмены последних действий и после

При нажатии пункта меню "Выход Alt+F4" происходит выход из программы.

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


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

  • Разработка и реализация графического редактора сетей Петри. Описание программы, которая позволяет создавать новые сети путем добавления позиций и переходов, соединяя их определенным образом. Основы построения систем автоматизационного проектирования.

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

  • Изучение основных алгоритмов генерации различных видов фракталов. Выбор языка и среды программирования. Характеристика структурных элементов растрового графического редактора фракталов. Описание интерфейса приложения, порядок редактирования изображений.

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

  • Элементы интерфейса графического редактора Macromedia Flash. Создание изображений, преобразование формы и заливки. Использование слоев и библиотечных образцов. Разработка анимации в среде Flash. Реализация мультипликации, ее звуковое сопровождение.

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

  • Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.

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

  • Анализ влияния сглаживающего шума на различные категории томографических изображений. Разработка программного обеспечения для снижения помех и увеличения четкости очертаний крупных объектов. Метод рисования прямоугольников, ограничивающих все контуры.

    практическая работа [1006,7 K], добавлен 28.09.2019

  • Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.

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

  • Понятие машинного и реального времени, дискретизация времени. Реализация временных задержек в программе. Вычисление значения многочлена методом Горнера. Разработка схем алгоритмов, основной программы и подпрограмм. Построение графика временной функции.

    курсовая работа [40,7 K], добавлен 18.04.2012

  • Сущность, задачи и особенности объектно-ориентированного программирования. Создание и редактирование графических файлов при помощи различных инструментов рисования. Основные требования к аппаратному и программному обеспечению. Руководство пользователя.

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

  • Разработка программы, аналога Paint системы Windows, с функциями открытия изображения в графическом редакторе и его сохранения, написания текста в любом указанном мышкой месте, изменения шрифта, размера и цвета текста на языке программирования Delphi.

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

  • Математическое описание операций преобразования плоских фигур. Выбор и обоснование языка программирования и среды разработки. Задание базовой фигуры. Разработка алгоритма работы программы. Проверка корректности работы программы в различных режимах.

    курсовая работа [567,6 K], добавлен 13.10.2014

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