Разработка графического редактора - Курсовая работа

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

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
ВВЕДЕНИЕ3.1 Класс CSHAPE - базовый абстрактный класс фигуры 3.2 Класс контейнер shapes - класс контейнер для фигур 3.3 Класс CLINE : public CSHAPE. 3.4 Класс CRECT : public CLINE.4.1 Метод System::Void BRECT_Click() - Нажатие кнопки прямоугольника 4.2 Метод System::Void PICTUREBOX1_MOUSEDOWN 4.6 Метод shapes * shapes::ADDS(CSHAPE *s) - Добавление элемента в списокПеред тем как рисовать линии и фигуры, отображать текст, выводить изображения и управлять ими, необходимо создать объект Graphics. Объект Graphics представляет поверхность рисования GDI и является объектом, который используется для создания графических изображений. После создания объекта Graphics его можно использовать для рисования линий и фигур, отображения текста или изображения и управления ими.Также для управления прорисовки объектов на форме с помощью мыши был продуман свой собственный метод, а именно при нажатии кнопки мыши запоминается первая координата курсора, при отпускании кнопки, по следующей координате прорисовывается объект.Поле Тип Описание color1 int Код цвета в RGB color2 int Код цвета в RGB для заливки filled bool Заливка x float * Указатель на массив координат по горизонтали y float * Указатель на массив координат по вертикали ~CSHAPE() - Деструктор virtual Draw(PICTUREBOX^ picbox) = 0 void Чисто виртуальный метод прорисовки фигуры virtual SETPOINT(unsigned int i, float X, float Y) void Виртуальный метод добавления точки в массивы координат 3.2 Класс контейнер shapes - класс контейнер для фигур Поле Тип Описание next shapes * Указатель на следующий элемент в списке prev shapes * Указатель на предыдущий элемент в списке Метод класса Тип Описание shapes() - Конструктор класса shapes4.1 Метод System::Void BRECT_Click() - Нажатие кнопки прямоугольника 4.2 Метод System::Void PICTUREBOX1_MOUSEDOWN() - Событие на нажатие кнопки 4.3 Метод System::Void PICTUREBOX1_MOUSEDOWN() - Событие на нажатие кнопки 4.4 Метод System::Void Form1_Load() - Загрузка формы 4.

Список литературы
ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

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

В данной курсовой работе использовалась среда программирования 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. Информационный портал: 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 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) 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]FILLRECTANGLE(brush1,x[0],y[1],x[1]-x[0],y[0]-y[1]);

if (x[1]-x[0]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) 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]DRAWRECTANGLE(pen1,x[0],y[1],x[1]-x[0],y[0]-y[1]);

if (x[1]-x[0]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 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.

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

{ public: Form1(void)

INITIALIZECOMPONENT();

//TODO: Add the constructor code here protected: ///

/// Clean up any resources being used.

///

~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: ///

/// Required designer variable.

///

#pragma region Windows Form Designer generated code

///

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

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

/// 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(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 = LPICTUREBOX1";

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(resources->GETOBJECT(LBLINE.BACKGROUNDIMAGE")));

this->BLINE->FLATSTYLE = System::Windows::Forms::FLATSTYLE::Flat;

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

this->BLINE->Name = LBLINE";

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(resources->GETOBJECT(LBRECT.BACKGROUNDIMAGE")));

this->BRECT->FLATSTYLE = System::Windows::Forms::FLATSTYLE::Flat;

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

this->BRECT->Name = LBRECT";

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(resources->GETOBJECT(LBELLIPSE.BACKGROUNDIMAGE")));

this->BELLIPSE->FLATSTYLE = System::Windows::Forms::FLATSTYLE::Flat;

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

this->BELLIPSE->Name = LBELLIPSE";

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(resources->GETOBJECT(LBTRIANGLE.BACKGROUNDIMAGE")));

this->BTRIANGLE->FLATSTYLE = System::Windows::Forms::FLATSTYLE::Flat;

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

this->BTRIANGLE->Name = LBTRIANGLE";

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(resources->GETOBJECT(LBROUND.BACKGROUNDIMAGE")));

this->BROUND->FLATSTYLE = System::Windows::Forms::FLATSTYLE::Flat;

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

this->BROUND->Name = LBROUND";

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 = LBCOLOR1";

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 = LBCOLOR2";

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(resources->GETOBJECT(LBBEZIER.BACKGROUNDIMAGE")));

this->BBEZIER->FLATSTYLE = System::Windows::Forms::FLATSTYLE::Flat;

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

this->BBEZIER->Name = LBBEZIER";

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 = LCHECKBOX1";

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(2) {this->TOOLSTRIPMENUITEM1, this->TOOLSTRIPMENUITEM2});

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

this->MENUSTRIP1->Name = LMENUSTRIP1";

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

this->MENUSTRIP1->TABINDEX = 13;

this->MENUSTRIP1->Text = LMENUSTRIP1";

// TOOLSTRIPMENUITEM1 this->TOOLSTRIPMENUITEM1->DROPDOWNITEMS->ADDRANGE(gcnew cli::array(3) {this->OPENTOOLSTRIPMENUITEM, this->SAVETOOLSTRIPMENUITEM, this->EXITTOOLSTRIPMENUITEM});

this->TOOLSTRIPMENUITEM1->Name = LTOOLSTRIPMENUITEM1";

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

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

// OPENTOOLSTRIPMENUITEM this->OPENTOOLSTRIPMENUITEM->Name = LOPENTOOLSTRIPMENUITEM";

this->OPENTOOLSTRIPMENUITEM->SHORTCUTKEYS = static_cast((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 = LSAVETOOLSTRIPMENUITEM";

this->SAVETOOLSTRIPMENUITEM->SHORTCUTKEYS = static_cast((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 = LEXITTOOLSTRIPMENUITEM";

this->EXITTOOLSTRIPMENUITEM->SHORTCUTKEYS = static_cast((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(2) {this->CLEARTOOLSTRIPMENUITEM, this->UNDOTOOLSTRIPMENUITEM});

this->TOOLSTRIPMENUITEM2->Name = LTOOLSTRIPMENUITEM2";

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

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

// CLEARTOOLSTRIPMENUITEM this->CLEARTOOLSTRIPMENUITEM->Name = LCLEARTOOLSTRIPMENUITEM";

this->CLEARTOOLSTRIPMENUITEM->SHORTCUTKEYS = static_cast((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 = LUNDOTOOLSTRIPMENUITEM";

this->UNDOTOOLSTRIPMENUITEM->SHORTCUTKEYS = static_cast((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(1) {this->TOOLSTRIPSTATUSLABEL1});

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

this->STATUSSTRIP1->Name = LSTATUSSTRIP1";

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

this->STATUSSTRIP1->TABINDEX = 14;

this->STATUSSTRIP1->Text = LSTATUSSTRIP1";

// TOOLSTRIPSTATUSLABEL1 this->TOOLSTRIPSTATUSLABEL1->Name = LTOOLSTRIPSTATUSLABEL1";

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

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

// OPENFILEDIALOG1 this->OPENFILEDIALOG1->FILENAME = LOPENFILEDIALOG1";

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

// SAVEFILEDIALOG1 this->SAVEFILEDIALOG1->Filter = LBMP|*.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 = LFORM1";

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(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" происходит выход из программы.

Размещено на

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?