C#繪圖設(shè)計(jì)文檔_第1頁
C#繪圖設(shè)計(jì)文檔_第2頁
C#繪圖設(shè)計(jì)文檔_第3頁
C#繪圖設(shè)計(jì)文檔_第4頁
C#繪圖設(shè)計(jì)文檔_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計(jì) 目 錄設(shè)計(jì)目的 - 2總體設(shè)計(jì) - 2模塊設(shè)計(jì) - 3核心代碼 - 7設(shè)計(jì)測試 - 11心得體會(huì) - 15 參考文獻(xiàn) - 16 一 設(shè)計(jì)目的1)掌握.NET基本結(jié)構(gòu)以及C#語言的基本知識(shí)和技能;2)基本掌握面向?qū)ο蟪绦蜷_發(fā)的基本思路和方法;3)掌握GDI+開發(fā)基本知識(shí);4)利用所學(xué)的基本知識(shí)和技能,進(jìn)行簡單數(shù)據(jù)庫應(yīng)用程序設(shè)計(jì)課程設(shè)計(jì)是我們的主要教學(xué)實(shí)踐環(huán)節(jié),通過課程設(shè)計(jì)我們圍繞基礎(chǔ)課或者專業(yè)課,運(yùn)用學(xué)的知識(shí),結(jié)合實(shí)際應(yīng)用設(shè)計(jì)而進(jìn)行的一次綜合分析設(shè)計(jì)能力的訓(xùn)練. 課程設(shè)計(jì)的宗旨在與培養(yǎng)我們在本課程范圍內(nèi),初步掌握解決實(shí)際應(yīng)用問題時(shí)所應(yīng)具備的查閱資料,綜合運(yùn)用所學(xué)知識(shí)的能力,為畢業(yè)設(shè)計(jì)及

2、今后從事專業(yè)工作打下基礎(chǔ).通過本次課程設(shè)計(jì),能夠鍛煉我們的動(dòng)手能力,使我們能夠很好的鞏固上一個(gè)學(xué)期所學(xué)的知識(shí)內(nèi)容,掌握工程軟件設(shè)計(jì)的基本方法,強(qiáng)化了我們上機(jī)動(dòng)手的能力,通過這次的課程設(shè)計(jì),我們感覺到了以前學(xué)習(xí)的不足,以及在學(xué)習(xí)的過程中遇到的問題,能使我們對(duì)學(xué)過的知識(shí)加深理解,為后續(xù)學(xué)的計(jì)算機(jī)專業(yè)課,打下堅(jiān)實(shí)的基礎(chǔ).在課程設(shè)計(jì)過程中我們感覺到了,團(tuán)體合作的重要性,我們組幾個(gè)人進(jìn)行合作分工,提高了設(shè)計(jì)的效率,充分體現(xiàn)了團(tuán)體精神,為以后出去在社會(huì)上工作時(shí)的合作精神奠定了基礎(chǔ),能夠感覺到合作的重要性.還有在老師的指導(dǎo)下我們我們才能順利的進(jìn)行設(shè)計(jì),感覺到了老師的重要性,有了老師我們設(shè)計(jì)才有了方向目標(biāo).二

3、 總體設(shè)計(jì)簡單繪圖板程序此圖形圖像處理機(jī)具有如下功能:1能由鼠標(biāo)控制繪制直線、矩形、橢圓,并能控制線條的顏色2能改變矩形和橢圓。3能打開和保存為圖形文件。4能打開圖片。5能通過參數(shù)對(duì)圖片進(jìn)行縮放我們做的這個(gè)繪圖板是一個(gè)簡易的類似Windows畫圖工具的簡單繪圖板程序,我們設(shè)計(jì)了主要有菜單欄,狀態(tài)欄等基本元素,能夠?qū)崿F(xiàn)簡單的集合畫圖,也能夠在鼠標(biāo)控制下進(jìn)行手動(dòng)畫圖.通過測試程序能夠順利運(yùn)行. 要求利用C#的編程思想以及組件開發(fā)原理來完成系統(tǒng)的設(shè)計(jì); 突出C#語言與其它語言不同點(diǎn)(即體現(xiàn)C#的高級(jí)功能,如屬性概念、接口、事件、委托等)體現(xiàn)可視化編程基本東西,如系統(tǒng)帶有菜單、工具欄、狀態(tài)欄以及一些常

4、用的高級(jí)控件。主要流程圖如下:新建矩形直線畫筆時(shí)間簡易繪圖板文件查找關(guān)于打開保存退出工具欄狀態(tài)欄顏色橡皮橢圓選擇工具三 主要模塊菜單欄及狀態(tài)欄 菜單有 文件 ( 新建 打開 保存 退出) 查看 (工具欄 狀態(tài)欄) 關(guān)于一 新建其中新建就是創(chuàng)建子窗體代碼 Form1 pic = new Form1(); Pic.show();/創(chuàng)建一子窗體 然后調(diào)用Show()方法顯示該窗體二 打開 打開是執(zhí)行 muopen_Click事件處理程序.當(dāng)點(diǎn)擊 文件打開 的時(shí)候就會(huì)打開到設(shè)定的目錄下,并顯示要打開的文件類型代碼分析OpenFileDialog openFile1= new OpenFileDialo

5、g();openFile1.InitialDirectory= "c:"openFile1.Filter="Graphics File(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All Files(*.*)|*.*"openFile1.FilterIndex=1;openFile1.RestoreDirectory=true;if(openFile1.ShowDialog()=DialogResult.OK&&openFile1.FileName.Length>0)pictureBox1.Image

6、=Image.FromFile(openFile1.FileName);首先創(chuàng)建打開文件對(duì)話框openfile1 InitialDirectory是文件初始目錄的符串 Filter為文件名篩選器字符串,用于決定打開時(shí)出來的類型, FilterIndex 就是打開時(shí)的索引值,打開時(shí)的類型. RestoreDirectory 表示在關(guān)閉對(duì)話框時(shí)是否還原到當(dāng)前目錄. If判斷是否點(diǎn)擊了打開按pictureBox1.Image =Image.FromFile(openFile1.FileName)是加載選定的文件.三 保存 SaveFileDialog 類表示一個(gè)通用對(duì)話框,創(chuàng)建子類并調(diào)用ShowDi

7、alog方法來顯示對(duì)話框,允許指定用于保存文件選項(xiàng). 通過對(duì)話框能夠?qū)ictureBox1控件中的文件存盤. 代碼分析SaveFileDialog saveFile1= new SaveFileDialog();saveFile1.Filter="GraphicsFile(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|AllFiles(*.*)|*.*"saveFile1.ShowDialog();saveFile1.FilterIndex=4; saveFile1.RestoreDirectory=true; saveFile1.Initia

8、lDirectory= "c:" if (saveFile1.FileName!="")this.pictureBox1.Image.Save(saveFile1.FileName,System.Drawing.Imaging.ImageFormat.Bmp);this.Text=saveFile1.FileName;elseMessageBox.Show("必須輸入文件名");同打開一樣首先創(chuàng)建一另存為對(duì)話框 當(dāng)單擊保存的時(shí)候則ShowDialog方法的返回為DialogResult.OK 否則為 DialogResult.Canc

9、el然后再判斷是否保存,調(diào)用pictureBox1控件的SavaFile方法,要指定要保存的文件,并且指定類型!四 退出 當(dāng)單擊退出按鈕的時(shí)候就可以執(zhí)行下列代碼, this.menuItem5.Index = 3;this.menuItem5.Text = "退出"this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click);五 工具欄核心代碼 using System;using System.Drawing;using System.Collections;using System.Compo

10、nentModel;using System.Windows.Forms;using System.Data;using System.Drawing.Drawing2D;using System.IO;using System.Drawing.Imaging; using System.Text; namespace WindowsApplication7public class Form1 : System.Windows.Forms.Formprivate Point p1 = Point.Empty, p2 = Point.Empty;private Point p3=Point.Em

11、pty;private bool isMouseDown = false, isMouseUp = false;ArrayList addArray = new ArrayList();public static string shape;public static Color color=Color.Black;private System.Windows.Forms.Timer timer1;private System.Windows.Forms.StatusBarPanel statusBarPanel2;System.Drawing.Bitmap image = null;publi

12、c struct SharpTypepublic string type;public Point p1, p2;public Color foreColor, backColor;public Brush brush; public SharpType(string type, Point p1, Point p2, Color foreColor, Color backColor, Brush brush )this.type = type;this.p1 = p1;this.p2 = p2;this.foreColor = foreColor;this.backColor = backC

13、olor;this.brush = brush;static void Main() Application.Run(new Form1();private void menuItem2_Click(object sender, System.EventArgs e)Form1 pic = new Form1();pic.Show();private void menuItem9_Click(object sender, System.EventArgs e) MessageBox.Show("本程序由 商保根 穆釗 王西亞 張翼飛 王東偉制作!");Form1.shape

14、="DrawEllipse"statusBar1.Panels0.Text="選擇橢圓"if(e.Button=toolBarButton4)Form1.shape="DrawRectangle"statusBar1.Panels0.Text="選擇矩形"if(e.Button=toolBarButton5)Form1.shape="DrawLine"statusBar1.Panels0.Text="選擇直線"if(e.Button=toolBarButton6)Form1.

15、shape="DrawCurve"statusBar1.Panels0.Text="選擇畫筆" private void menuItem8_Click(object sender, System.EventArgs e)if(menuItem8.Checked=false)menuItem8.Checked=true;statusBar1.Visible=true;elsemenuItem8.Checked=false;statusBar1.Visible=false;四 繪圖板核心代碼private void pictureBox1_MouseMov

16、e(object sender, System.Windows.Forms.MouseEventArgs e)Graphics g = Graphics.FromImage(pictureBox1.Image); if( isMouseDown && p2 != Point.Empty )if(shape="DrawEllipse")g.DrawEllipse( Pens.White, p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.Y ) );if(shape="DrawRecta

17、ngle")g.DrawRectangle( Pens.White, p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.Y ) );if(shape="DrawLine") g.DrawLine(Pens.White,this.p1,this.p2);if( isMouseDown && ! isMouseUp )p2 = new Point( e.X, e.Y );if(shape="DrawEllipse")g.DrawEllipse(new Pen(color

18、,1), p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.Y ) );if(shape="DrawRectangle")g.DrawRectangle( new Pen(color,1), p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.Y ) );if(shape="DrawLine")g.DrawLine(new Pen(color,1),this.p1,this.p2);if(shape="DrawCurve

19、")g.DrawLine(new Pen(color,1),this.p1,this.p2);addArray.Add( new SharpType("DrawCurve", p1, p2, color, Color.Empty,Brushes.Black ) );this.p1=this.p2;this.p2=this.p3;if(shape="DrawEraser")g.DrawLine(new Pen(Color.White,1),this.p1,this.p2);addArray.Add( new SharpType("Dra

20、wCurve", p1, p2, Color.White, Color.White, Brushes.Black ) );this.p1=this.p2;this.p2=this.p3;foreach( SharpType type in addArray )if(type.type="DrawEllipse")g.DrawEllipse( new Pen(type.foreColor,1), type.p1.X, type.p1.Y, Math.Abs( type.p1.X - type.p2.X ), Math.Abs( type.p1.Y - type.p2

21、.Y ) );if(type.type="DrawRectangle")g.DrawRectangle(new Pen(type.foreColor,1), type.p1.X, type.p1.Y, Math.Abs( type.p1.X - type.p2.X ), Math.Abs( type.p1.Y - type.p2.Y ) );if(type.type="DrawLine")g.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);if(type.type="DrawCurve&q

22、uot;)g.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);if(type.type="DrawEraser")g.DrawLine(new Pen(type.foreColor,100.0f),type.p1,type.p2);this.pictureBox1.Refresh(); g.Dispose();private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)if( ! isMouseUp )t

23、his.isMouseDown = true;this.p1 = new Point( e.X, e.Y );private void pictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)this.isMouseDown = false;p2 = new Point( e.X, e.Y );Graphics g = Graphics.FromImage(pictureBox1.Image); if(shape="DrawEllipse")g.DrawEllipse( new Pen

24、(color,1), p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.Y ) );addArray.Add( new SharpType( "DrawEllipse", p1, p2, color, Color.Empty, Brushes.Black ) );if(shape="DrawRectangle")g.DrawRectangle(new Pen(color,1), p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.

25、Y ) );addArray.Add( new SharpType("DrawRectangle", p1, p2, color, Color.Empty, Brushes.Black ) );if(shape="DrawLine")g.DrawLine(new Pen(color,1),this.p1,this.p2);addArray.Add( new SharpType("DrawLine", p1, p2, color, Color.Empty, Brushes.Black ) );if(shape="DrawCur

26、ve")g.DrawLine(new Pen(color,1),this.p1,this.p2);addArray.Add( new SharpType("DrawCurve", p1, p2, color, Color.Empty, Brushes.Black ) ); if(shape="DrawEraser")g.DrawLine(new Pen(Color.White,1),this.p1,this.p2);addArray.Add( new SharpType("DrawCurve", p1, p2, Color.

27、White, Color.White, Brushes.Black ) );p1 = Point.Empty;p2 = Point.Empty;this.pictureBox1.Refresh(); g.Dispose();private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)foreach( SharpType type in addArray )if(type.type="DrawEllipse")e.Graphics.DrawEllipse(new Pen

28、(type.foreColor,1), type.p1.X, type.p1.Y, Math.Abs( type.p1.X - type.p2.X ), Math.Abs( type.p1.Y - type.p2.Y ) );if(type.type="DrawRectangle")e.Graphics.DrawRectangle( new Pen(type.foreColor,1), type.p1.X, type.p1.Y, Math.Abs( type.p1.X - type.p2.X ), Math.Abs( type.p1.Y - type.p2.Y ) );if

29、(type.type="DrawLine")e.Graphics.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);if(type.type="DrawCurve")e.Graphics.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);if(type.type="DrawEraser")e.Graphics.DrawLine(new Pen(type.foreColor,100.0f),type.p1,type.p2);pri

30、vate void timer1_Tick(object sender, System.EventArgs e)this.statusBarPanel2.Text=System.DateTime.Now.ToLongDateString()+" "+System.DateTime.Now.ToLongTimeString();this.statusBar1.Refresh();private void Form1_Load(object sender, System.EventArgs e)this.pictureBox1.Controls.Clear(); image = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height); Graphics.FromImage(image).Clear(Color.White); this.pictureBox1.Image = (Bitmap)image.Clone(); 五測試效果圖六:心得體會(huì) 設(shè)計(jì),給人以創(chuàng)作的沖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論