Автоматизированная система "Графический редактор"

Разработка графического редактора "MyGraphicsEditor", аналогичного редактору MS Paint. Анализ предметной области по методологии объектной декомпозиции. Подготовление контрольных примеров, проведение автономного и комплексного тестирования и отладки.

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

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

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

А.4 Открытие и работа со справкой

Для ознакомления описания программы и информации об разработчиках или руководства пользования необходимо выбрать пункт меню "Справка" и выбрать соответствующий пункт.

Рисунок А.9 - Экранная форма справки о программе

Приложение Б

Листинг программы

Класс MainForm

public partial class MainForm: Form

{

private NewForm form3=new NewForm();

private Loupe form4;

public Pen pen = new Pen(Color.Black);

private SolidBrush brush = new SolidBrush(Color.White);

private Font font; // текст

private int mode;

private Point nullPoint = new Point(int.MaxValue,0);

public Point startPoint;

private Point movePoint;

private bool equalSize,stirka = false;

private Form2 form2;

private bool isMouseDown = false;

private Graphics pastedImageGraphics;

private Selector selector;

public Bitmap oldImage;

public Bitmap oldImage2;

public double sizeImage;

public Bitmap buffer;

private bool flag;

public MainForm()

{

InitializeComponent();

AddOwnedForm(form3);

AddOwnedForm(form4);

openFileDialog1.InitialDirectory = saveFileDialog1.InitialDirectory = Directory.GetCurrentDirectory();

form3.numericUpDown1.Value = panel1.ClientSize.Width;

form3.numericUpDown2.Value = panel1.ClientSize.Height;

form3.button1_Click(this,null);

//button1_Click(this, null);// чистое поле при запуске

font = Font.Clone() as Font;

comboBox1.SelectedIndex = 0;

mode = 0;

oldImage = new Bitmap(pictureBox1.Image);

oldImage2 = new Bitmap(pictureBox1.Image);

sizeImage = 1;

flag = false;

NizPalitlabel4.BackColor = Color.Gold;

}

private void Form1_Load(object sender, EventArgs e)

{

form2 = new Form2 {Owner = this, Location = new Point(Location.X+11, Location.Y + 488)};

form2.MouseUp += form2_MouseUp;

form2.Show();

FontFamily[] family = FontFamily.Families;

foreach (FontFamily font in family)

{

comboBox2.Items.Add(font.GetName(1).ToString());

}

}

public void form2_MouseUp(object sender, MouseEventArgs e)

{

if (form2 != null)

{

if (form2.choose)

{

Palitlabel2.BackColor = form2.color;

Palitlabel2.Refresh();

}

if (form2.choose2)

{

NizPalitlabel4.BackColor = form2.color;

NizPalitlabel4.Refresh();

}

}

}

// создание нового поля

private void создатьToolStripMenuItem_Click(object sender, EventArgs e)

{

DialogResult res = MessageBox.Show("Сохранить изменения в файле?", "MyGraphicsEditor",

MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);

if(res==DialogResult.Yes)

{

string s0 = saveFileDialog1.FileName;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

string s1 = saveFileDialog1.FileName;

if (s0.ToUpper() == s1.ToUpper())

{

s0 = Path.GetDirectoryName(s0) + "\\($$##SS).png";

pictureBox1.Image.Save(s0);

pictureBox1.Image.Dispose();

File.Delete(s1);

File.Move(s0, s1);

pictureBox1.Image = new Bitmap(s1);

}

else

{

pictureBox1.Image.Save(s1);

Text = "Image Editor" + s1;

}

}

}

form3.ActiveControl = form3.numericUpDown1;

if (form3.ShowDialog() == DialogResult.OK)

{

saveFileDialog1.FileName = "";

Text = "Image Editor";

UpdateOldImage();

}

}

private void newbutton_Click(object sender, EventArgs e)

{

form3 = new NewForm();

form3.Show();

form3.Activate();

}

public void открытьToolStripMenuItem_Click(object sender, EventArgs e)

{

DialogResult res = MessageBox.Show("Сохранить изменения в файле?", "MyGraphicsEditor",

MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);

if (res == DialogResult.Yes)

{

string s0 = saveFileDialog1.FileName;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

string s1 = saveFileDialog1.FileName;

if (s0.ToUpper() == s1.ToUpper())

{

s0 = Path.GetDirectoryName(s0) + "\\($$##SS).png";

pictureBox1.Image.Save(s0);

pictureBox1.Image.Dispose();

File.Delete(s1);

File.Move(s0, s1);

pictureBox1.Image = new Bitmap(s1);

}

else

{

pictureBox1.Image.Save(s1);

Text = "Image Editor" + s1;

}

}

}

startPoint = nullPoint;

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

string s = openFileDialog1.FileName;

try

{

Image image = new Bitmap(s);

Graphics g = Graphics.FromImage(image);

g.Dispose();

if (pictureBox1.Image != null)

pictureBox1.Image.Dispose();

pictureBox1.Image = image;

UpdateOldImage();// отмена действия

}

catch (Exception)

{

MessageBox.Show("The file has the wrong format" + s, "Error");

return;

}

Text = "Image Editor" + s;

saveFileDialog1.FileName = Path.ChangeExtension(s, "png");

openFileDialog1.FileName = "";

}

}

private void openbutton_Click(object sender, EventArgs e)

{

}

private void savebutton_Click(object sender, EventArgs e)

{

}

private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

startPoint = nullPoint;

string s0 = saveFileDialog1.FileName;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

string s1 = saveFileDialog1.FileName;

if (s0.ToUpper() == s1.ToUpper())

{

s0 = Path.GetDirectoryName(s0) + "\\($$##SS).png";

pictureBox1.Image.Save(s0);

pictureBox1.Image.Dispose();

File.Delete(s1);

File.Move(s0, s1);

pictureBox1.Image = new Bitmap(s1);

}

else

{

pictureBox1.Image.Save(s1);

Text = "Image Editor" + s1;

}

}

}

private void deletebutton_Click(object sender, EventArgs e)

{

if (MessageBox.Show("Очистить рисунок?", "Очистка", MessageBoxButtons.YesNo, MessageBoxIcon.Question)

== DialogResult.Yes)

{

UpdateOldImage();// отмена действия

Graphics g = Graphics.FromImage(pictureBox1.Image);

g.Clear(Color.White);

// изменитьЦветФонаToolStripMenuItem.BackColor = Color.White;

pictureBox1.Invalidate();

}

}

private void button7_Click(object sender, EventArgs e)

{

}

//задаем шрифт

private void Fontbutton_Click(object sender, EventArgs e)

{

fontDialog1.Font = font;

if (fontDialog1.ShowDialog() == DialogResult.OK)

{

Font f = font;

textBox1.Font = font = fontDialog1.Font;

if (font.Bold == true)

{

checkBox2.Checked = true;

}

else

{

checkBox2.Checked = false;

}

if (font.Italic == true)

{

checkBox3.Checked = true;

}

else

{

checkBox3.Checked = false;

}

if (font.Underline == true)

{

checkBox4.Checked = true;

}

else

{

checkBox4.Checked = false;

}

numericUpDown2.Value = (decimal)fontDialog1.Font.Size;

comboBox2.Text = font.Name;

f.Dispose();

}

}

//стиль линий

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)

{

e.DrawBackground();//заливает выбранных пункт из комбокса

// - заливка фоновым цветом области

// связанной с рисуемым элементом списка

using (Pen p = new Pen(e.ForeColor, 2))

{

// рисование образцов линий в элеметах выпадающего списка

p.DashStyle = (DashStyle)e.Index;

int y = (e.Bounds.Top + e.Bounds.Bottom) / 2;

e.Graphics.DrawLine(p, e.Bounds.Left, y, e.Bounds.Right, y);

}

e.DrawFocusRectangle();

// дополнительное выделение текущего элемента списка

}

// реакция на выбор значения при работе с комбоксом

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

pen.DashStyle = (DashStyle)comboBox1.SelectedIndex;

//Figlabel5.Invalidate();

}

//толщина линий

private void numericUpDown1_ValueChanged(object sender, EventArgs e)

{

pen.Width = (int)numericUpDown1.Value;

// Figlabel5.Invalidate();

}

//изменить цвет палитры

private void NizPalitlabel4_Click(object sender, EventArgs e)

{

Label Lb = sender as Label;

colorDialog1.Color = Lb.BackColor;

if (colorDialog1.ShowDialog()== DialogResult.OK)

{

Lb.BackColor = colorDialog1.Color;

изменитьToolStripMenuItem.BackColor = Lb.BackColor;

textBox1.ForeColor = Lb.BackColor;

}

}

//изменить цвет палитры нижней палитры

private void изменитьToolStripMenuItem_Click(object sender, EventArgs e)

{

ToolStripMenuItem P = sender as ToolStripMenuItem;

colorDialog1.Color = P.BackColor;

if (colorDialog1.ShowDialog() == DialogResult.OK)

P.BackColor = colorDialog1.Color;

Palitlabel2.BackColor = P.BackColor;

textBox1.ForeColor = P.BackColor;

}

//цвет текста и заливки

private void NizPalitlabel4_BackColorChanged(object sender, EventArgs e)

{

brush.Color = NizPalitlabel4.BackColor;//область закрашивания

// Figlabel5.Invalidate();

}

//задаем цвет линий по верхней палитре

private void Palitlabel2_BackColorChanged(object sender, EventArgs e)

{

pen.Color = Palitlabel2.BackColor;

// Figlabel5.Invalidate();

}

//отслеживание координат

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

//label6.Text = string.Format("X,Y:{0},{1}", e.X, e.Y);

toolStripStatusLabel2.Text = string.Format("X , Y : {0},{1}", e.X, e.Y);

if (startPoint == nullPoint)

return;

if (e.Button == MouseButtons.Left)

{

switch (mode)

{

case 0:

if (numericUpDown1.Value < 13)

{

Graphics g = Graphics.FromImage(pictureBox1.Image);

g.DrawLine(pen, startPoint, e.Location);

g.Dispose();

startPoint = e.Location;

pictureBox1.Invalidate();

}

else

{

movePoint = e.Location;

Graphics g = Graphics.FromImage(pictureBox1.Image);

int size_of_lastic2 = (int)numericUpDown1.Value;

g.FillEllipse(new SolidBrush(Color.Black), movePoint.X - size_of_lastic2 / 2, movePoint.Y - size_of_lastic2 / 2, size_of_lastic2, size_of_lastic2);

g.Dispose();

pictureBox1.Invalidate();

}

break;

case 1:

case 2:

case 3:

ReversibleDraw();

movePoint = e.Location;

equalSize = Control.ModifierKeys == Keys.Control;

ReversibleDraw();

break;

case 5:

if (stirka)

{

movePoint = e.Location;

Graphics g = Graphics.FromImage(pictureBox1.Image);

int size_of_lastic = (int)numericUpDown1.Value;

g.FillEllipse(new SolidBrush(Color.White), movePoint.X - size_of_lastic / 2, movePoint.Y - size_of_lastic / 2, size_of_lastic, size_of_lastic);

g.Dispose();

pictureBox1.Invalidate();

break;

}

break;

case 7:

ReversibleDraw();

movePoint = e.Location;

ReversibleDraw();

break;

}

}

}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)

{

if (startPoint == nullPoint)

return;

if (mode >= 1)

{

Graphics g = Graphics.FromImage(pictureBox1.Image);

switch (mode)

{

case 1:

g = Graphics.FromImage(pictureBox1.Image);

g.DrawLine(pen, startPoint, movePoint);

pictureBox1.Invalidate();

g.Dispose();

break;

case 2:

movePoint = e.Location;

DrawFigure(g,DrawRect(startPoint,movePoint));

break;

case 3:

movePoint = e.Location;

DrawFigure(g,DrawRect(startPoint,movePoint));

break;

case 5:

stirka = false;

break;

case 7:

//textBox1.Font = font;

if (isMouseDown)

{

movePoint = e.Location;

if (startPoint != movePoint)

{

if (movePoint.X < startPoint.X && movePoint.Y < startPoint.Y)

{

movePoint = new Point(startPoint.X, startPoint.Y);

startPoint = e.Location;

}

else

{

if (movePoint.X < startPoint.X)

{

var buf = startPoint.X;

startPoint.X = movePoint.X;

movePoint.X = buf;

}

else

{

if (movePoint.Y < startPoint.Y)

{

var buf = startPoint.Y;

startPoint.Y = movePoint.Y;

movePoint.Y = buf;

}

}

}

var graphic = Graphics.FromImage(pictureBox1.Image);

selector = new Selector

{

Location = new Point(Location.X + pictureBox1.Location.X + panel1.Location.X + startPoint.X+10, Location.Y + pictureBox1.Location.Y + 30 + panel1.Location.Y + startPoint.Y),

Size = new Size(Math.Abs(startPoint.X - movePoint.X),

Math.Abs(startPoint.Y - movePoint.Y)),

Owner = this

};

selector.Show();

isMouseDown = false;

}

}

break;

}

g.Dispose();

pictureBox1.Invalidate();

this.Refresh();// не дает возможности рисовать за палитрой

}

}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

movePoint = startPoint = e.Location;

UpdateOldImage();// отмена действия

stirka = true;

if(selector != null)

selector.Close();

if (Control.ModifierKeys == Keys.Alt)

{

Color c = (pictureBox1.Image as Bitmap).GetPixel(e.X, e.Y);

if (e.Button == MouseButtons.Left)

Palitlabel2.BackColor = c;

else

NizPalitlabel4.BackColor = c;

}

if (mode == 4)

{

Graphics g = Graphics.FromImage(pictureBox1.Image);

SolidBrush b = new SolidBrush(pen.Color);

string fs = comboBox2.Text;

font = new Font(fs.ToString(), (float) numericUpDown2.Value,

(

(checkBox2.Checked ? FontStyle.Bold : FontStyle.Regular) |

(checkBox3.Checked ? FontStyle.Italic : FontStyle.Regular) |

(checkBox4.Checked ? FontStyle.Underline : FontStyle.Regular)

), GraphicsUnit.Point, 204);

textBox1.Font = font ;//= fontDialog1.Font;

g.DrawString(textBox1.Text,font,b,e.Location);

g.Dispose();

pictureBox1.Invalidate();

}

if (mode == 5)

{

//this.Cursor=new Cursor(GetType(),"@c:\lastik.cur");

// this.Cursor = NativeMethods.LoadCustomCursor(@"c:\aero_busy_l.ani");

Graphics g = Graphics.FromImage(pictureBox1.Image);

int size_of_lastic = (int)numericUpDown1.Value;

g.FillEllipse(new SolidBrush(Color.White), e.X - size_of_lastic / 2, e.Y - size_of_lastic / 2, size_of_lastic, size_of_lastic);

pictureBox1.Invalidate();

g.Dispose();

}

if (mode == 6)

{

}

if (mode == 7)

{

isMouseDown = true;

startPoint = new Point(e.X, e.Y);

}

} Класс Seletor

public partial class Selector : Form

{

private MainForm form1;

public Selector()

{

InitializeComponent();

}

private void Selector_Load(object sender, EventArgs e)

{

form1 = Owner as MainForm;

PasteToolStripMenuItem.Enabled = form1.buffer != null;

form1.копироватьToolStripMenuItem.Enabled = true;

}

private void Selector_Activated(object sender, EventArgs e)

{

form1 = Owner as MainForm;

form1.Focus();

}

public void CoryToolStripMenuItem_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

var buf1 = form1.pictureBox1.Image as Bitmap;

form1.buffer = buf1.Clone(new Rectangle(form1.startPoint, Size), buf1.PixelFormat);

form1.вставитьToolStripMenuItem1.Enabled = true;

Close();

}

public void CutToolStripMenuItem_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

var buf1 = form1.pictureBox1.Image as Bitmap;

form1.buffer = buf1.Clone(new Rectangle(form1.startPoint, Size), buf1.PixelFormat);

form1.UpdateOldImage();

using (var graphics = Graphics.FromImage(form1.pictureBox1.Image))

{

graphics.FillRectangle(new SolidBrush(Color.White), new Rectangle(form1.startPoint, Size));

}

form1.pictureBox1.Refresh();

Close();

}

private void DeleteToolStripMenuItem_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

form1.UpdateOldImage();

using (var graphics = Graphics.FromImage(form1.pictureBox1.Image))

{

graphics.FillRectangle(new SolidBrush(Color.White), new Rectangle(form1.startPoint, Size));

}

form1.pictureBox1.Refresh();

Close();

}

private void PasteToolStripMenuItem_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

form1.UpdateOldImage();

using (var graphics = Graphics.FromImage(form1.pictureBox1.Image))

{

graphics.DrawImage(form1.buffer, form1.startPoint);

}

form1.pictureBox1.Refresh();

Close();

}

private void повернутьНа90ГрToolStripMenuItem_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

var buf1 = form1.pictureBox1.Image as Bitmap;

form1.buffer = buf1.Clone(new Rectangle(form1.startPoint, Size), buf1.PixelFormat);

form1.buffer.RotateFlip(RotateFlipType.Rotate90FlipNone);

form1.UpdateOldImage();

using (var graphics = Graphics.FromImage(form1.pictureBox1.Image))

{

graphics.FillRectangle(new SolidBrush(Color.White) , new Rectangle(form1.startPoint, Size));

graphics.DrawImage(form1.buffer, form1.startPoint);

}

form1.pictureBox1.Refresh();

Close();

}

private void повернутьНа90ГрадусовВлевоToolStripMenuItem_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

var buf1 = form1.pictureBox1.Image as Bitmap;

form1.buffer = buf1.Clone(new Rectangle(form1.startPoint, Size), buf1.PixelFormat);

form1.buffer.RotateFlip(RotateFlipType.Rotate270FlipNone);

form1.UpdateOldImage();

using (var graphics = Graphics.FromImage(form1.pictureBox1.Image))

{

graphics.FillRectangle(new SolidBrush(Color.White), new Rectangle(form1.startPoint, Size));

graphics.DrawImage(form1.buffer, form1.startPoint);

}

form1.pictureBox1.Refresh();

Close();

}

private void обратитьЦветаToolStripMenuItem_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

var buf1 = form1.pictureBox1.Image as Bitmap;

form1.buffer = buf1.Clone(new Rectangle(form1.startPoint, Size), buf1.PixelFormat);

form1.UpdateOldImage();

using (var graphics = Graphics.FromImage(form1.pictureBox1.Image))

{

graphics.DrawImage(form1.Generate_negative_image(form1.buffer), form1.startPoint);

}

form1.pictureBox1.Refresh();

Close();

}

}

Класс NewForm

public partial class NewForm : Form

{

private MainForm form1;

public NewForm()

{

InitializeComponent();

}

private void Form3_Load(object sender, EventArgs e)

{

form1 = Owner as MainForm;

}

internal void button1_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

var x1 = (int) numericUpDown1.Value;

var y1 = (int) numericUpDown2.Value;

Image image = new Bitmap(x1, y1);

Graphics g = Graphics.FromImage(image);

g.Clear(Color.White);

g.Dispose();

PictureBox p = Owner.Controls["panel1"].Controls["pictureBox1"] as PictureBox;

if (p.Image != null)

p.Image.Dispose();

p.Image = image;

Hide();

}

private void button2_Click(object sender, EventArgs e)

{

form1 = Owner as MainForm;

Close();

}

}

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


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

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

    курсовая работа [680,1 K], добавлен 03.12.2008

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

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

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

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

  • Функции графического редактора Paint. Сохранение документов, вставка, перемещение, копирование, удаление. Многократное увеличение или уменьшение инструмента. Полная палитра, выбор третьего цвета для рисования, пипетка, заливка, пользовательская кисть.

    контрольная работа [22,3 K], добавлен 27.07.2009

  • Графический редактор Paint одновременно работает с двумя цветами, которые отображаются на панели слева от палитры. Один цвет рассматривается как основной, другой-как фоновый. Инструмент рисования может использоваться как основной, так и фоновый цвет.

    методичка [30,1 K], добавлен 05.10.2008

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

    контрольная работа [3,1 M], добавлен 14.02.2012

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

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

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

    контрольная работа [279,3 K], добавлен 12.03.2011

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

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

  • Общая характеристика возможностей языка программирования C++ Win32 Api. Выбор метода решения задачи по созданию простого графического редактора. Описание проектирования функциональных частей, разработки программы. Тестирование и анализ результатов.

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

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