Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

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

Курсовая Купить готовую Узнать стоимостьмоей работы

I mage = 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… Читать ещё >

Содержание

  • Введение
  • 2. Исследование предметной области
  • 3. Формирование требований к
  • приложению
  • 4. Анализ инструментальных средств и технологий
  • 5. Проектная часть. Разработка
  • приложения
  • 6. Рабочая документация
  • 7. Тестирование
  • приложения
  • Заключение
  • Список использованных источников

10

Приложение, А — Исходный код файла GraphicInstrument. cs 25

11

Приложение Б — Исходный файл модуля frmMyPain. cs 32

12

Приложение В — Результаты тестирования 44

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

I mage = 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 Методы для выполнения файловых операций/// ///Загрузитьфайл…/// 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; } } }/// ///Создать…/// 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; } }/// ///Сохранитьфайл/// 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); }/// ///Сохранитькак…/// 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); }/// ///Закрытьфайл/// 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].

C ontrols. IndexOfKey («Height»); h = int. Parse («0» + this. Controls[x]. C ontrols[y].Text); y = this. Controls[x]. C ontrols. IndexOfKey («Width»); w = int. Parse («0» + this. Controls[x]. Controls[y].Text);if (h * w == 0) {newErrorMessage («Error!», «Incorectnparameters»).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 + «nn» + 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 Второй тестовый рисунок

Показать весь текст

Список литературы

  1. Стандарт ISO/IEC 15948http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=29 581
  2. ДомашняястраницаJointPhotographicExpertsGroup (http://www.jpeg.org/jpeg/index.html)
  3. Михаил Пайсон, «ООП с примерами, Часть 2». (http://habrahabr.ru/post/87 205/)
  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 с
Заполнить форму текущей работой
Купить готовую работу

ИЛИ