Автор работы: Пользователь скрыл имя, 27 Мая 2013 в 04:20, курсовая работа
В настоящее время рынок программного обеспечения переполнен различными программами и редакторами, позволяющими обрабатывать и редактировать цифровые фото. Человеку, не слишком хорошо понимающему особенности тех или иных программных средств, порой очень сложно разобраться в этом многообразии софта. Однако, правильный выбор программных средств для решения конкретной задачи по обработке фотоснимков является одним из залогов успеха получения законченных фотографий.
Введение……………………………………………………………………… 5
1 Аналитический обзор литературы 7
2 Разработка алгоритма ………………………………………………………. 9
3 Разработка программного стредства 11
3.1 Описание классов 11
3.2 Диаграмма классов…………………………………………………… 16
4 Обоснование технических приемов программирования 18
5 Тестрование, эксперементальные исследования и анализ полученных результатов………………………………………………………………………...19
6 Руководство пользователя………………………………………………………28
Заключение 33
Список литературы 34
Приложение листинг программы……………..……………………………....35
Ведомость…………………………………………………………………….....
Чтобы изменить размер ставим курсор на прямоугольник в углу области выделения, а затем тянем за него в любую сторону, в зависимости от того, как мы хотим изменить размер.
Растягивание овала вниз
Для перемещения фигуры, необходимо зажать маленький прямоугольник в центре фигуры и потянуть фигуру куда нам необходимо.
При клике на левую синюю стрелку (отмена последней операции) Овал вернется туда, откуда был перенесен:
При выборе правой стрелки вернется туда, куда мы ее перемещали:
В результате
выполнения курсового проекта был
получен работающий программный
продукт, реализующий поставленную
задачу. Для реализации проекта использовалась
интегрированная среда
Базовая функциональность программного обеспечения и его архитектура, реализованные в рамках курсового проекта, предполагают дальнейшее наращивание его функциональных возможностей.
[1] MSDN [Электронный ресурс]. – Электронные данные. – Режим доступа: http://msdn.microsoft.com.
[2] Троелсен Э. - Язык программирования C# 2011 и платформа .NET 4 – М.: издательский дом «Вильямс», 2011. – 1392 с.
[3] Шилдт Г. Полное руководство С#4.0 – М.: издательский дом «Вильямс», 2011. – 1056 с.
ПРИЛОЖЕНИЕ
В
Листинг
программы
Файл Circle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public class Circle : Shape
{
public override void draw(Graphics grph)
{
int x, y;
if (p2.X < p1.X)
x = p2.X;
else
x = p1.X;
if (p2.Y < p1.Y)
y = p2.Y;
else
y = p1.Y;
grph.DrawEllipse(this.pen, x, y, Math.Abs(p2.X - p1.X), Math.Abs(p2.Y - p1.Y));
}
}
}
Файл CircleBuilder.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
public class CircleBuilder : ShapeBuilder
{
public CircleBuilder()
{
namebuilder = "Ellipse";
}
public override Shape CreateShape()
{
return new Circle();
}
}
}
Файл Erase.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public class Erase : Shape
{
public override void draw(Graphics grph)
{
grph.FillRectangle(Brushes.
}
public override void PickOutMe(Graphics grph)
{
}
}
}
Файл EraseBuilder.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
public class EraseBuilder : ShapeBuilder
{
public EraseBuilder()
{
namebuilder = "Erase";
}
public override Shape CreateShape()
{
return new Erase();
}
}
}
Файл Line.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public class Line: Shape
{
public override void draw(Graphics grph)
{
grph.DrawLine(this.pen, p1, p2);
}
}
}
Файл LineBuilder.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
public class LineBuilder : ShapeBuilder
{
public LineBuilder()
{
namebuilder = "Line";
}
public override Shape CreateShape()
{
return new Line();
}
}
}
Файл ManagerUndoRedo.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Serialization;
namespace WindowsFormsApplication1
{
class ManagerUndoRedo
{
private Stack<List<MementoShape>> stackCurrentMementoes = new Stack<List<MementoShape>>();
private Stack<List<MementoShape>> stackMementoesundoredo = new Stack<List<MementoShape>>();
public void AddNewCurrentState(List<Shape> list_of_Shapes)
{
List<MementoShape> mementolist = new List<MementoShape>();
foreach (var item in list_of_Shapes)
{
mementolist.Add(item.
}
stackCurrentMementoes.Push(
stackMementoesundoredo.Clear()
}
public void ClearStack()
{
stackCurrentMementoes.Clear();
stackMementoesundoredo.Clear()
}
public List<Shape> Undo()
{
List<MementoShape> mementolist;
List<Shape> list_of_Shapes = new List<Shape>();
if (stackCurrentMementoes.Count != 0)
{
stackMementoesundoredo.Push(
if (stackCurrentMementoes.Count != 0)
{
mementolist = stackCurrentMementoes.Peek();
foreach (var item in mementolist)
list_of_Shapes.Add(item.
}
}
return list_of_Shapes;
}
public List<Shape> Redo()
{
List<MementoShape> mementolist;
List<Shape> list_of_Shapes = new List<Shape>();
if (stackMementoesundoredo.Count != 0)
stackCurrentMementoes.Push(
mementolist = stackCurrentMementoes.Peek();
foreach (var item in mementolist)
list_of_Shapes.Add(item.
return list_of_Shapes;
}
public void SaveMementoes(string path)
{
XmlSerializer xs = new XmlSerializer(typeof(List<Meme
StreamWriter sw = new StreamWriter(path + ".xml");
if (stackCurrentMementoes.Count != 0)
{ xs.Serialize(sw, stackCurrentMementoes.Peek()); }
sw.Close();
}
public List<Shape> LoadMementoes(string path)
{
XmlSerializer xs = new XmlSerializer(typeof(List<Meme
Stream reader = new FileStream(path, FileMode.Open);
stackCurrentMementoes.Push((Li
reader.Close();
List<Shape> list_of_Shapes = new List<Shape>();
List<MementoShape> mementolist;
mementolist = stackCurrentMementoes.Peek();
foreach (var item in mementolist)
list_of_Shapes.Add(item.
return list_of_Shapes;
}
}
}
Файл MementoShape.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public class MementoShape
{
private Shape shapeState;
private Point p1 = new Point(), p2 = new Point();
public MementoShape() { }
public MementoShape(Shape state)
{
shapeState = state;
p1.X = state.P1.X; p1.Y = state.P1.Y;
p2.X = state.P2.X; p2.Y = state.P2.Y;
}
public Shape ShapeState
{
get
{
shapeState.P1 = p1;
shapeState.P2 = p2;
return shapeState;
}
set
{
shapeState = value;
p1 = shapeState.P1;
p2 = shapeState.P2;
}
}
}
}
Файл Pencil.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public class Pencil: Shape
{
public override void draw(Graphics grph)
{
grph.DrawLine(this.pen, p1, p2);
}
public override void PickOutMe(Graphics grph)
{
}
}
}
Файл PencilBuilder.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{
public class PencilBuilder : ShapeBuilder
{
public PencilBuilder()
{
namebuilder = "Pencil";
}
public override Shape CreateShape()
{
return new Pencil();
}
}
}
Файл Rectangle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public class Rectangle : Shape
{
public override void draw(Graphics grph)
{
int x, y;
if (p2.X < p1.X)
x = p2.X;
else
x = p1.X;
if (p2.Y < p1.Y)
y = p2.Y;
else
y = p1.Y;
grph.DrawRectangle(this.pen, x, y, Math.Abs(p2.X - p1.X), Math.Abs(p2.Y - p1.Y));
}
}
}
Файл RectangleBuilder.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
public class RectangleBuilder :ShapeBuilder
{
public RectangleBuilder()
{
namebuilder = "Rectangle";
}
public override Shape CreateShape()
{
return new Rectangle();
}
}
}
Файл SetCursor.cs
using System;
using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.
using System.Reflection;
static class SetCursor
{
public static Cursor LoadCustomCursor(string path)
{
IntPtr hCurs = LoadCursorFromFile(path);
if (hCurs == IntPtr.Zero) throw new Win32Exception();
var curs = new Cursor(hCurs);
// Note: force the cursor to own the handle so it gets released properly
var fi = typeof(Cursor).GetField("
fi.SetValue(curs, true);
return curs;
}
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern IntPtr LoadCursorFromFile(string path);
}
Файл Shape.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
using System.Xml.Serialization;
namespace WindowsFormsApplication1
{
[Serializable]
[XmlInclude(typeof(Rectangle))
public abstract class Shape
{
protected Point p1 = new Point(), p2 = new Point();
protected Pen pen = new Pen(Color.Black);
public abstract void draw(System.Drawing.Graphics grph);
public Point P1
{
get { return p1;}
set { p1 = value;}
}
public Point P2
{
get { return p2; }
set { p2 = value; }
}
public void SetPenColor(Pen tmppen)
{
pen.Color = tmppen.Color;
}
public void SetPenWidth(Pen tmppen)
{
pen.Width = tmppen.Width;
}
public void SetLineStyle()
{
pen.LineJoin = System.Drawing.Drawing2D.LineJ
}
public virtual void PickOutMe(Graphics grph)
{
Pen blackpen = new Pen(Color.Black,2);
int x1, x2, y1, y2;
if (P1.X < P2.X)
{
x1 = P1.X;
x2 = P2.X;
}
else
{
x2 = P1.X;
x1 = P2.X;
}
if (P1.Y < P2.Y)
{
y1 = P1.Y;
y2 = P2.Y;
}
else
{
y2 = P1.Y;
y1 = P2.Y;
}
grph.DrawRectangle(blackpen, p2.X-4, p2.Y-4, 8, 8);
grph.DrawRectangle(blackpen, x1+(x2-x1)/2-4, y1-4+(y2-y1)/2, 8, 8);
blackpen.DashStyle = System.Drawing.Drawing2D.DashS
blackpen.Width = 1;
grph.DrawRectangle(blackpen, x1-6, y1-6, x2 - x1+12, y2 - y1+12);
}
public MementoShape CreateMementoShape()
{
return (new MementoShape(this));
}
/*public void SetMementoShape(MementoShape mementoShape)
{
this = mementoShape.ShapeState;
}*/
}
}
Файл ShapeBuilder.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public abstract class ShapeBuilder
{
public abstract Shape CreateShape();
public string namebuilder;
public string NameBuilder
{
get { return namebuilder; }
set { namebuilder = value; }
}
}
}
Файл Triangle.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
[Serializable]
public class Triangle : Shape
{
public override void draw(Graphics grph)
{
Point p3 = new Point();
p3.X = p1.X;
p3.Y = p2.Y;
grph.DrawLine(this.pen, p1, p2);
grph.DrawLine(this.pen, p2, p3);
grph.DrawLine(this.pen, p3, p1);
}
}
}
Файл TriangleBuilder.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
class TriangleBuilder : ShapeBuilder
{
public TriangleBuilder()
{
namebuilder = "Triangle";
}
public override Shape CreateShape()
{
return new Triangle();
}
}
}
Файл UserShape.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using WindowsFormsApplication1;
namespace WindowsFormsApplication1
{
public class UserShape :Shape
{
private List<Shape> listofShapes = new List<Shape>();
private int length, width;
public UserShape(List<Shape> tmplist, int x, int y)
{
listofShapes = tmplist;
length = x;
width = y;
}
public override void draw(Graphics grph)
Информация о работе Построение и обработка графических объектов