Автоматизированная система "Графический редактор"
Разработка графического редактора "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