Вход

Разработка Windows-приложения: Простейший графический редактор на основе ООП

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 76086
Дата создания 2014
Страниц 24
Источников 10
Мы сможем обработать ваш заказ (!) 10 июня в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
2 980руб.
КУПИТЬ

Содержание

1 Введение 3
2 Исследование предметной области 4
3 Формирование требований к приложению 7
4 Анализ инструментальных средств и технологий 9
5 Проектная часть. Разработка приложения 12
6 Рабочая документация 19
7 Тестирование приложения 22
8 Заключение 23
9 Список использованных источников 24
10 Приложение А – Исходный код файла GraphicInstrument.cs 25
11 Приложение Б – Исходный файл модуля frmMyPain.cs 32
12 Приложение В - Результаты тестирования 44

Фрагмент работы для ознакомления

Image = bitmap;} _tempbt = null; }//если пытаемся вставить изображениеif (value==Modes.mInsert) {Graphics.FromImage(bitmap);if (_tempbuf != null) {graphics.DrawImage(_tempbuf, XY1); pbox.Image = bitmap;_tempbt = null;} }//если поступила команда копировать в буфер сразу после команды выделенияif ((value ==Modes.mCopy)&(_sModes ==Modes.mSelect)) {RectangleF rf = newRectangleF(XY1.X+1, XY1.Y+1, Math.Abs(XY1.X+1 - XY2.X-2)-2, Math.Abs(XY1.Y+1 - XY2.Y-2)-2); _tempbuf = newBitmap((int)rf.Width,(int)rf.Height);//восстанавливаем изображение до выделенияif (_tempbt != null) bitmap = (Bitmap)_tempbt.Clone();graphics = Graphics.FromImage(_tempbuf);graphics.DrawImage(bitmap, 0, 0, rf, GraphicsUnit.Pixel);graphics = Graphics.FromImage(bitmap); }//если поступила команда вырезать в буфер сразу после команды выделенияif ((value == Modes.mCut) & (_sModes == Modes.mSelect)) {//bitmap = (Bitmap)_tempbt.Clone();RectangleF rf = newRectangleF(XY1.X + 1, XY1.Y + 1, Math.Abs(XY1.X + 1 - XY2.X - 2) - 2, Math.Abs(XY1.Y + 1 - XY2.Y - 2) - 2); _tempbuf = newBitmap((int)rf.Width, (int)rf.Height);//восстанавливаем изображение до выделенияif (_tempbt != null){bitmap = (Bitmap)_tempbt.Clone(); }graphics = Graphics.FromImage(_tempbuf);graphics.DrawImage(bitmap, 0, 0, rf, GraphicsUnit.Pixel);graphics = Graphics.FromImage(bitmap);graphics.FillRectangle(newSolidBrush(Color.White), XY1.X + 1, XY1.Y + 1, Math.Abs(XY1.X + 1 - XY2.X - 2) - 2, Math.Abs(XY1.Y + 1 - XY2.Y - 2) - 2); pbox.Image = bitmap; } _sModes = value;} }public frmMyPain() { InitializeComponent();//задаем компонент, на котором будет происходить рисованиеpen = newPen(pbPen.BackColor) {Width = Convert.ToSingle(nudWidthLine.Value)};//связываем bitmap сполотномbitmap = newBitmap(pbox.Width, pbox.Height);graphics = Graphics.FromImage(bitmap);graphics.Clear(Color.White);//текущуюфигуруустанавливаемв NoFigurefigure = newNoFigure(bitmap, pen);sModes = Modes.mDraw; } #region Методы для выполнения файловых операций///<summary>///Загрузитьфайл...///</summary>privatevoid FileOpen() {if (_pictureIsSaved == false) {DialogResult dr = MessageBox.Show("Сохранитьизменениявфайле?", "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);if (dr == DialogResult.Cancel) return;if (dr == DialogResult.Yes) {if (String.IsNullOrEmpty(_currentFileName)) {SaveFileDialog sfd = newSaveFileDialog(); sfd.Filter = "BMP (*.BMP)|*.bmp";if (sfd.ShowDialog() == DialogResult.OK & sfd.FileName.ToLower().EndsWith(".bmp")) _currentFileName = sfd.FileName;elsereturn; }bitmap.Save(_currentFileName, ImageFormat.Bmp); } }OpenFileDialog ofd = newOpenFileDialog();if (ofd.ShowDialog() == DialogResult.OK) {if (ofd.FileName.ToLower().EndsWith(".bmp") || ofd.FileName.ToLower().EndsWith(".jpeg") || ofd.FileName.ToLower().EndsWith(".jpg") || ofd.FileName.ToLower().EndsWith(".jpe") || ofd.FileName.ToLower().EndsWith(".jfif") ) {bitmap = newBitmap(_currentFileName = ofd.FileName);graphics = Graphics.FromImage(bitmap); pbox.Image = bitmap; panel.AutoScrollMinSize = pbox.Size = pbox.Image.Size; _pictureIsSaved = true; } } }///<summary>///Создать...///</summary>privatevoid FileNew(){if (_pictureIsSaved == false) {DialogResult dr = MessageBox.Show("Сохранитьизменениявфайле?", "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);if (dr == DialogResult.Cancel) { return; }if (dr == DialogResult.Yes) {if (_currentFileName == null) {SaveFileDialog sfd = newSaveFileDialog(); sfd.Filter = "BMP (*.BMP)|*.bmp";if (sfd.ShowDialog() == DialogResult.OK & sfd.FileName.ToLower().EndsWith(".bmp")) _currentFileName = sfd.FileName;elsereturn; }bitmap.Save(_currentFileName, ImageFormat.Bmp); } }DialogForm df = newDialogForm();if (DialogResult.OK == df.ShowDialog()) {bitmap = newBitmap(df.NewImageSize.Width, df.NewImageSize.Height); panel.AutoScrollMinSize = pbox.Size = df.NewImageSize;graphics=Graphics.FromImage(bitmap);graphics.Clear(Color.White); pbox.Image = bitmap; _pictureIsSaved = false; } }///<summary>///Сохранитьфайл///</summary>privatevoid FileSave(){//еслисохранено - выходимif (_pictureIsSaved) return;//еслиимяфайланезаданоif (String.IsNullOrEmpty(_currentFileName)) {SaveFileDialog sfd = newSaveFileDialog(); sfd.Filter = "BMP (*.BMP)|*.bmp";if (sfd.ShowDialog() == DialogResult.OK & sfd.FileName.ToLower().EndsWith(".bmp")) _currentFileName = sfd.FileName;else {MessageBox.Show("Изображениенебылосохранено.");return; } }//сохраняемизображениеbitmap.Save(_currentFileName, ImageFormat.Bmp); }///<summary>///Сохранитькак...///</summary>privatevoid FileSaveAs(){SaveFileDialog sfd = newSaveFileDialog(); sfd.Filter = "BMP (*.BMP)|*.bmp";if (sfd.ShowDialog() == DialogResult.OK & sfd.FileName.ToLower().EndsWith(".bmp")) _currentFileName = sfd.FileName;else {MessageBox.Show("Изображениенебылосохранено.");return; }bitmap.Save(_currentFileName, ImageFormat.Bmp); }///<summary>///Закрытьфайл///</summary>privatevoid FileClose(){if (_pictureIsSaved == false) {DialogResult dr = MessageBox.Show("Сохранитьизмнениявфайле?", "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);if (dr == DialogResult.Cancel)return;if (dr == DialogResult.Yes) {if (_currentFileName == null) {SaveFileDialog sfd = newSaveFileDialog(); sfd.Filter = "BMP (*.BMP)|*.bmp";if (sfd.ShowDialog() == DialogResult.OK & sfd.FileName.ToLower().EndsWith(".bmp")) _currentFileName = sfd.FileName;else {return; } }bitmap.Save(_currentFileName, ImageFormat.Bmp);// PictureIsLoaded = false; } }bitmap = newBitmap(500,500);graphics = Graphics.FromImage(bitmap);graphics.Clear(Color.White); pbox.Image = bitmap; panel.AutoScrollMinSize = pbox.Size = newSize(); ; _pictureIsSaved = true; }#endregionprivatevoid button1_Click(object sender, EventArgs e){figure = newPen1(bitmap,pen); }privatevoidсоздатьToolStripMenuItem_Click(object sender, EventArgs e){FileNew(); }privatevoidзагрузитьToolStripMenuItem_Click(object sender, EventArgs e){FileOpen(); }privatevoid fmExit_Click(object sender, EventArgs e){Application.Exit(); }privatevoid fmSaveFile_Click(object sender, EventArgs e){FileSave(); }privatevoid fmSaveFileAs_Click(object sender, EventArgs e){FileSaveAs(); }privatevoid fmCloseFile_Click(object sender, EventArgs e){FileClose(); }privatevoid pbox_MouseDown(object sender, MouseEventArgs e){//запоминаем начальные координаты XY1.X = e.X; XY1.Y = e.Y;//действия в режиме выделенияif (sModes == Modes.mSelect) {if (_tempbt == null ) _tempbt= (Bitmap) bitmap.Clone(); }if ((sModes == Modes.mpInsert)||(sModes == Modes.mInsert)){ sModes = Modes.mInsert; }figure.SetBitmap(sModes == Modes.mSelect ? _tempbt : bitmap);if ((sModes == Modes.mpText)||(sModes == Modes.mText)) {sModes = Modes.mText; tbInput.Visible = true; tbInput.Location = XY1; tbInput.Text = "Введитетекст"; }if (sModes==Modes.mFill) {bitmap = figure.Draw(XY1, XY2); pbox.Image = bitmap; } _pictureIsSaved = false; }privatevoid button3_Click(object sender, EventArgs e) {sModes = Modes.mDraw;figure = newLine(bitmap, pen); }privatevoid btnQuadrate_Click(object sender, EventArgs e){sModes = Modes.mDraw;figure = newRectangle(bitmap,pen); }privatevoid pbox_MouseMove(object sender, MouseEventArgs e){ toolStripStatusLabel1.Text = String.Format("{0}:{1}", e.X.ToString(), e.Y.ToString()); toolStripStatusLabel2.Text = e.Button.ToString();if ((sModes != Modes.mInsert)&&(sModes != Modes.mFill)) {if ((e.Button == MouseButtons.Left)) { XY2.X = e.X; XY2.Y = e.Y;bitmap = figure.Draw(XY1, XY2);pbox.Image = bitmap; } } }privatevoid btnElipse_Click(object sender, EventArgs e){ sModes = Modes.mDraw;figure = newEllipse(bitmap,pen);}privatevoid pbPen_MouseDown(object sender, MouseEventArgs e){ColorDialog clrDlg = newColorDialog();if (clrDlg.ShowDialog()==DialogResult.OK) { (senderasPictureBox).BackColor = clrDlg.Color;if (figure != null) { pen.Color = clrDlg.Color;figure.SetPen(pen);} } }privatevoid btnClear_Click(object sender, EventArgs e){sModes = Modes.mDraw;Pen p = (Pen)pen.Clone();p.Color = Color.White;figure = newLastik(bitmap,p); }privatevoid btnText_Click(object sender, EventArgs e){figure = newText(bitmap,pen);sModes = Modes.mpText; }privatevoid frmMyPain_FormClosing(object sender, FormClosingEventArgs e){FileClose(); }privatevoid nudWidthLine_ValueChanged(object sender, EventArgs e){ pen.Width = Convert.ToSingle(nudWidthLine.Value);if (figure != null){figure.SetPen(pen); } }privatevoid btnReFill_Click(object sender, EventArgs e){sModes = Modes.mDraw;figure = newSpray(bitmap, pen); }privatevoid btnFills_Click(object sender, EventArgs e){sModes = Modes.mFill;figure = newFill(bitmap, pen);}privatevoid nudWidthLine_KeyUp(object sender, KeyEventArgs e){ nudWidthLine_ValueChanged(sender, e); }privatevoid btnCursor_Click(object sender, EventArgs e){sModes = Modes.mSelect; Cursor = Cursors.Default;Pen _tpen = (Pen) pen.Clone(); _tpen.Width = 1; _tpen.Color = Color.Gray;figure = newRectangle(bitmap, _tpen); }privatevoidкопироватьToolStripMenuItem_Click(object sender, EventArgs e){sModes = Modes.mCopy; }privatevoidвставитьToolStripMenuItem_Click(object sender, EventArgs e) {figure = newNoFigure(bitmap,pen);sModes = Modes.mpInsert; }privatevoidвырезатьToolStripMenuItem_Click(object sender, EventArgs e) {sModes = Modes.mCut; }privatevoid tbInput_KeyDown(object sender, KeyEventArgs e) {if (e.KeyCode == Keys.Enter) {Font f = newFont(this.Font.Name, (float) nudWidthLine.Value);Brush b = newSolidBrush(pen.Color);bitmap=(figure asText).SetText(tbInput.Text, f,b,XY1); pbox.Image = bitmap; tbInput.Visible = false;} } }classDialogForm : Form {Size size;public DialogForm() { ControlBox = false; MaximizeBox = false; MinimizeBox = false; ShowInTaskbar = false; Size = newSize(212, 135); StartPosition = FormStartPosition.CenterParent; FormBorderStyle = FormBorderStyle.FixedDialog;Button OkButton = newButton(); OkButton.Click += newEventHandler(OkButtonClick); OkButton.Location = newPoint(119, 99); OkButton.Size = newSize(75, 25); OkButton.Text = "OK";this.Controls.Add(OkButton);Button CanselButton = newButton(); CanselButton.Click += newEventHandler(CanselButtonClick);CanselButton.Location = newPoint(38, 99); CanselButton.Size = newSize(75, 25); CanselButton.Text = "Cansel";this.Controls.Add(CanselButton);GroupBox g = newGroupBox();g.Location = newPoint(12, 12); g.Name = "GroupBox"; g.Size = newSize(182, 81); g.Text = "New Image";ExtendedTextBox H = newExtendedTextBox(); H.Location = newPoint(66, 20); H.MaxLength = 4; H.Name = "Height"; H.Size = newSize(71, 20);g.Controls.Add(H);ExtendedTextBox W = newExtendedTextBox(); W.Location = newPoint(66, 46); W.MaxLength = 4; W.Name = "Width"; W.Size = newSize(71, 20);g.Controls.Add(W);Label h1 = newLabel(); h1.Location = newPoint(19, 23); h1.Text = "Height:";g.Controls.Add(h1);Label h2 = newLabel(); h2.Font = newFont(Font.FontFamily, 10f); h2.Location = newPoint(143, 23); h2.Size = newSize(22, 17); h2.Text = "px";g.Controls.Add(h2);Label w1 = newLabel(); w1.Location = newPoint(22, 49); w1.Text = "Width:";g.Controls.Add(w1);Label w2 = newLabel(); w2.Font = newFont(Font.FontFamily, 10f); w2.Location = newPoint(143, 49); w2.Size = newSize(22, 17); w2.Text = "px";g.Controls.Add(w2);this.Controls.Add(g); H.Text = W.Text = "500"; }publicSize NewImageSize {get { if (DialogResult.OK == DialogResult) return size; returnnewSize(); } }protectedvoid OkButtonClick(object sender, EventArgs ea){try {int x, y, h, w; x = this.Controls.IndexOfKey("GroupBox"); y = this.Controls[x].Controls.IndexOfKey("Height"); h = int.Parse("0" + this.Controls[x].Controls[y].Text); y = this.Controls[x].Controls.IndexOfKey("Width"); w = int.Parse("0" + this.Controls[x].Controls[y].Text);if (h * w == 0) {newErrorMessage("Error!", "Incorect\nparameters").ShowDialog();return; }size = newSize(h, w);}catch { } DialogResult = DialogResult.OK; }protectedvoid CanselButtonClick(object sender, EventArgs ea){ DialogResult = DialogResult.Cancel; } }classExtendedTextBox : TextBox {protectedoverridevoid OnKeyPress(KeyPressEventArgs e) {char c = e.KeyChar; e.Handled = !(Char.IsDigit(c) || c == '\b');if (e.Handled) Console.Beep(450, 200); }protectedoverridevoid OnTextChanged(EventArgs e){if (Text.Length > 1) {char[] c = Text.ToCharArray(0, 1);if (c[0] == '0'){ c = Text.ToCharArray(1, Text.Length - 1); Text = newstring(c); SelectionStart = Text.Length;} }if (Text.Length == 0) { Text = "0"; SelectionStart = Text.Length; } } }classErrorMessage : Form {Timer T;public ErrorMessage(string caption, string message) { ControlBox = false; MaximizeBox = false; MinimizeBox = false; ShowInTaskbar = false; FormBorderStyle = FormBorderStyle.FixedDialog; StartPosition = FormStartPosition.CenterParent; T = newTimer(); T.Enabled = true; T.Interval = 4200; T.Tick += newEventHandler(t_Tick);Label L = newLabel(); L.Font = newFont(Font.FontFamily, 10f); L.Font = newFont(L.Font, FontStyle.Bold); L.Text = caption + "\n\n" + message; L.TextAlign = ContentAlignment.MiddleCenter; ClientSize = newSize(140, 80); L.Size = newSize(140, 80);this.Controls.Add(L); }protectedvoid t_Tick(object sender, EventArgs ea) {this.Close(); }protectedoverridevoid OnClick(EventArgs e){this.Close(); } }}Приложение В -Результаты тестированияРисунок В.1 Первый тестовый рисунокРисунок В.2 Второй тестовый рисунок

Список литературы [ всего 10]

1 Стандарт ISO/IEC 15948http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=29581
2 ДомашняястраницаJointPhotographicExpertsGroup (http://www.jpeg.org/jpeg/index.html)
3 Михаил Пайсон, «ООП с примерами, Часть 2». (http://habrahabr.ru/post/87205/)
4 Медведев В.И. Особенности объектно-ориентированного программирования на С++/CLI, С# и Java. 2-е изд. – Казань: РИЦ «Школа», 2010 – 444 с.
5 Основные Конструктивные особенности. NETFramework (http://www.zabalnet.com/overview-highlight-principal-design-features.html)
6 Объектно-ориентированноепрограммирование (C# иVisualBasic) (http://msdn.microsoft.com/ru-ru/library/dd460654.aspx)
7 System.Drawing - пространство имен (http://msdn.microsoft.com/ru-ru/library/system.drawing.aspx)
8 Павловская Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов. – Спб: Питер, 2009 – 432 с.
9 Буч Г. и др. Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е изд – М.: 2008 – 720с.
10 Рихтер Дж. CLRviaC#. Программирование на платформе Microsoft .NETFramework 4.0 на языке C#. 3-е изд. – Спб.: Питер, 2012. 928 с
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.09232
© Рефератбанк, 2002 - 2024