Автор: Пользователь скрыл имя, 12 Декабря 2012 в 11:29, курсовая работа
Одним из наиболее распространенных типов программ для работ с графикой являются графические редакторы. Графический редактор - компьютерная программа, позволяющая ее пользователю создавать и редактировать изображения на экране компьютера и сохранять их во многих популярных форматах, например JPEG, PNG, GIF, TIFF.
Некоторые графические редакторы специализируются на редактировании фотореалистических изображений, в то время как другие более "заточены" на создание и редактирование рисунков.
Некоторые из наиболее распространенных инструментов графических редакторов позволяют произвести следующие редакции:
ВВЕДЕНИЕ………………………………………………………………………..3
1 ПОСТАНОВКА ЗАДАЧИ……………………………………………………...4
1.1 Теоретическое введение………………………………………………………4
1.1.1 Операционная система……………………………………………………...4
1.1.2 Виды графических редакторов……………………………………………..4
1.1.3 Функции основных графических редакторов……………………………..5
1.2 Постановка задачи………………………………………………………….....9
2 ПРОЕКТИРОВАНИЕ………………………………………………………….11
2.1 Выбор используемых технологий.……………………………….................11
3 РАЗРАБОТКА………………………………………………………………….12
3.1 Выбор системной архитектуры……………………………………………..12
3.2 Описание функций, реализующих программой…………………………...12
3.3 Разработка графического интерфейса……………………………………...23
3.4 Разработка классов………………………………………………..................25
3.5 Алгоритм программы………………………………………………………..29
4 ТЕСТИРОВАНИЕ ПРОГРАММЫ…………………………………………...30
5 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ…………………………………………35
5.1 Назначение программы……………………………………………………...35
5.2 Технические средства для запуска программы……………………………35
5.3 Действия оператора………………………………………………………….36
ВЫВОДЫ………………………………………………………………………...41
ПЕРЕЧЕНЬ ССЫЛОК…………………………………………………………...42
ПРИЛОЖЕНИЕ А……………………………………………
private void DrawFigure(Rectangle r, Graphics g)
{
switch (figureMode)
{
case 0:
if (!checkBox1.Checked)
g.FillRectangle(brush, r);
g.DrawRectangle(pen, r);
break;
case 1:
if (!checkBox1.Checked)
g.FillEllipse(brush, r);
g.DrawEllipse(pen, r);
break;
}
}
// метод рисования прямоугольника
private Rectangle PtToRect(Point p1, Point p2)
{
if (equalSize)
{
int dx = p2.X - p1.X, dy = p2.Y - p1.Y;
if (Math.Abs(dx) > Math.Abs(dy))
p2.X = p1.X + Math.Sign(dx) * Math.Abs(dy);
else
p2.Y = p1.Y + Math.Sign(dy) * Math.Abs(dx);
}
int x = Math.Min(p1.X, p2.X),
y = Math.Min(p1.Y, p2.Y),
w = Math.Abs(p2.X - p1.X),
h = Math.Abs(p2.Y - p1.Y);
return new Rectangle(x, y, w, h);
}
private void ReversibleDraw()
{
Point p1 = pictureBox1.PointToScreen(
p2 = pictureBox1.PointToScreen(
if (mode == 1)
ControlPaint.
else
ControlPaint.
}
//создание нового поля
private void Newbutton1_Click(object sender, EventArgs e)
{
form2.ActiveControl = form2.numericUpDown1;
if (form2.ShowDialog() == DialogResult.OK)
{
saveFileDialog1.FileName = "";
Text = "Image Editor";
UpdateOldImage();
}
}
// открытие файла
private void Openbutton2_Click(object sender, EventArgs e)
{
StartPt = nullPt;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string s = openFileDialog1.FileName;
try
{
Image im = new Bitmap(s);
Graphics g = Graphics.FromImage(im);
g.Dispose();
if (pictureBox1.Image != null)
pictureBox1.Image.Dispose();
pictureBox1.Image = im;
UpdateOldImage();// отмена действия
}
catch
{
MessageBox.Show("File" + s + " has a wrong format.", "Error");
return;
}
Text = "Image Editor-" + s;
saveFileDialog1.FileName = Path.ChangeExtension(s, "png");
openFileDialog1.FileName = "";
}
}
// сохранение файла
private void Savebutton3_Click(object sender, EventArgs e)
{
StartPt = nullPt;
string s0 = saveFileDialog1.FileName;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string s = saveFileDialog1.FileName;
if (s.ToUpper() == s0.ToUpper())
{
s0 = Path.GetDirectoryName(s0) + "\\($$##$$).png";
pictureBox1.Image.Save(s0);
pictureBox1.Image.Dispose();
File.Delete(s);
File.Move(s0, s);
pictureBox1.Image = new Bitmap(s);
}
else
pictureBox1.Image.Save(s);
Text = "Image Editor-" + s;
}
}
// отслеживание координат
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
label1.Text = string.Format("X,Y:{0},{1}", e.X, e.Y);
toolStripStatusLabel2.Text = string.Format("X,Y:{0},{1}", e.X, e.Y);
if (StartPt == nullPt)
return;
if (e.Button == MouseButtons.Left)
switch (mode)
{
case 0:
Graphics g = Graphics.FromImage(
g.DrawLine(pen, StartPt, e.Location);
g.Dispose();
StartPt = e.Location;
pictureBox1.Invalidate();
break;
case 1:
case 2:
ReversibleDraw();
movePt = e.Location;
equalSize = Control.ModifierKeys == Keys.Control;
ReversibleDraw();
break;
}
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
movePt = StartPt = e.Location;
UpdateOldImage();// отмена действия
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;
}
else
if (mode == 3)
{
Graphics g = Graphics.FromImage(
using (SolidBrush b = new SolidBrush(pen.Color))
g.DrawString(textBox1.Text, font, b, e.Location);
g.Dispose();
pictureBox1.Invalidate();
}
}
// обработчик для очистки
private void Clearbutton4_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Очистить рисунок?", "Очистка", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
== DialogResult.Yes)
{
UpdateOldImage();// отмена действия
using (Graphics g = Graphics.FromImage(
g.Clear(Color.White);
изменитьЦветФонаToolStripMenuI
pictureBox1.Invalidate();
}
//{
// e.Cancel = true;
//}
}
// задавание цвета обьектам
private void Palitlabel2_Click(object sender, EventArgs e)
{
Label Lb = sender as Label;
colorDialog1.Color = Lb.BackColor;
if (colorDialog1.ShowDialog() == DialogResult.OK)
Lb.BackColor = colorDialog1.Color;
изменитьЦветПалитрыToolStripMe
textBox1.ForeColor = Palitlabel2.BackColor;
}
private void Palitlabel2_BackColorChanged(o
{
pen.Color = Palitlabel2.BackColor;
Figlabel5.Invalidate();
}
private void numericUpDown1_ValueChanged(ob
{
pen.Width = (int)numericUpDown1.Value;
Figlabel5.Invalidate();
}
private void PenradioButton1_
{
RadioButton rb = sender as RadioButton;
if (!rb.Checked)
return;
mode = rb.TabIndex;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (StartPt == nullPt)
return;
if (mode >= 1)
{
Graphics g = Graphics.FromImage(
switch (mode)
{
case 1:
g.DrawLine(pen, StartPt, movePt);
break;
case 2:
DrawFigure(PtToRect(StartPt, movePt), g);
break;
}
g.Dispose();
pictureBox1.Invalidate();
this.Refresh();// не дает возможности рисовать за палитрой
}
{
}
}
// Нижняя палитра
private void NizPalitlabel4_
{
brush.Color = NizPalitlabel4.BackColor;
Figlabel5.Invalidate();
}
//Обработчик для метки с фигурами
private void Figlabel5_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Rectangle r = Figlabel5.ClientRectangle;
r.Width--; r.Height--;
DrawFigure(r, g);
}
private void Figlabel5_MouseDown(object sender, MouseEventArgs e)
{
FigureradioButton3.Checked = true;
figureMode = (figureMode + 1) % 2;
Figlabel5.Invalidate();
}
// Прозрачность фигур
private void checkBox1_CheckedChanged(objec
{
Figlabel5.Invalidate();
}
// отмена действия
private void UpdateOldImage()
{
oldImage.Dispose();
oldImage = new Bitmap(pictureBox1.Image);
}
// клавиша отмены
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
pictureBox1.Image = new Bitmap(oldImage);
}
}
private void отменитьПоследнееToolStripMenu
{
pictureBox1.Image.Dispose();
pictureBox1.Image = new Bitmap(oldImage);
}
private void изменитьЦветФонаToolStripMenuI
{
if (MessageBox.Show("Рисунок будет зарисован!", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
UpdateOldImage();
ToolStripMenuItem T = sender as ToolStripMenuItem;
colorDialog1.Color = T.BackColor;
if (colorDialog1.ShowDialog() == DialogResult.OK)
T.BackColor = colorDialog1.Color;
using (Graphics g = Graphics.FromImage(
g.Clear(T.BackColor);
pictureBox1.Invalidate();
}
}
private void изменитьЦветПалитрыToolStripMe
{
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 textBox1_Enter(object sender, EventArgs e)
{
FontradioButton4.Checked = true;
}
// задать шрифт
private void Fontbutton5_Click(object sender, EventArgs e)
{
fontDialog1.Font = font;
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
Font f = font;
textBox1.Font = font = fontDialog1.Font;
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_
{
pen.DashStyle = (DashStyle)comboBox1.
Figlabel5.Invalidate();
}
// Выход с программы
private void выходToolStripMenuItem_Click(o
{
Close();
}
// Выход с программы
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Вы уверены,что
хотите выйти из программы?", "Закрытие приложения!", MessageBoxButtons.YesNo,Messag
== DialogResult.No)
{
e.Cancel = true;
}
}
//выхов окна о программе
private void оПрограммеToolStripMenuItem_
{
Inforfation f = new Inforfation();
f.Show();
}
// вызов справки
private void вызовСправкиToolStripMenuItem_
{
Spravka f1 = new Spravka();
f1.Show();
}
private void панельИнструментовToolStripMen
{
if (
{
groupBox1.Visible = true;
}
else
{
groupBox1.Visible = false;
}
}
private void палитраToolStripMenuItem1_
{
if (палитраToolStripMenuItem1.
{
Palitlabel2.Visible = true;
NizPalitlabel4.Visible = true;
}
else
{
Palitlabel2.Visible = false;
NizPalitlabel4.Visible = false;
}
}
// вставить из буфера
private void вставитьToolStripMenuItem_
{
pictureBox1.Image = Clipboard.GetImage();
}
//коировать в буфер
private void копироватьToolStripMenuItem_
{
Clipboard.SetImage(
}
//вырезать в буфер
private void вырезатьToolStripMenuItem_
{
Graphics gr = Graphics.FromImage(
Clipboard.SetImage(
gr.Clear(Color.White);
this.Refresh();
}
// просмотр изображения
private void просмотрИзображенияToolStripMe
{
Prosmotr pr = new Prosmotr();
pr.pictureBox2.Size = pictureBox1.Size;
pr.pictureBox2.Image = pictureBox1.Image;
pr.Show();
}
}
}
Form2.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Paint1