C#绘图设计文档_第1页
C#绘图设计文档_第2页
C#绘图设计文档_第3页
C#绘图设计文档_第4页
C#绘图设计文档_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计 目 录设计目的 - 2总体设计 - 2模块设计 - 3核心代码 - 7设计测试 - 11心得体会 - 15 参考文献 - 16 一 设计目的1)掌握.NET基本结构以及C#语言的基本知识和技能;2)基本掌握面向对象程序开发的基本思路和方法;3)掌握GDI+开发基本知识;4)利用所学的基本知识和技能,进行简单数据库应用程序设计课程设计是我们的主要教学实践环节,通过课程设计我们围绕基础课或者专业课,运用学的知识,结合实际应用设计而进行的一次综合分析设计能力的训练. 课程设计的宗旨在与培养我们在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料,综合运用所学知识的能力,为毕业设计及

2、今后从事专业工作打下基础.通过本次课程设计,能够锻炼我们的动手能力,使我们能够很好的巩固上一个学期所学的知识内容,掌握工程软件设计的基本方法,强化了我们上机动手的能力,通过这次的课程设计,我们感觉到了以前学习的不足,以及在学习的过程中遇到的问题,能使我们对学过的知识加深理解,为后续学的计算机专业课,打下坚实的基础.在课程设计过程中我们感觉到了,团体合作的重要性,我们组几个人进行合作分工,提高了设计的效率,充分体现了团体精神,为以后出去在社会上工作时的合作精神奠定了基础,能够感觉到合作的重要性.还有在老师的指导下我们我们才能顺利的进行设计,感觉到了老师的重要性,有了老师我们设计才有了方向目标.二

3、 总体设计简单绘图板程序此图形图像处理机具有如下功能:1能由鼠标控制绘制直线、矩形、椭圆,并能控制线条的颜色2能改变矩形和椭圆。3能打开和保存为图形文件。4能打开图片。5能通过参数对图片进行缩放我们做的这个绘图板是一个简易的类似Windows画图工具的简单绘图板程序,我们设计了主要有菜单栏,状态栏等基本元素,能够实现简单的集合画图,也能够在鼠标控制下进行手动画图.通过测试程序能够顺利运行. 要求利用C#的编程思想以及组件开发原理来完成系统的设计; 突出C#语言与其它语言不同点(即体现C#的高级功能,如属性概念、接口、事件、委托等)体现可视化编程基本东西,如系统带有菜单、工具栏、状态栏以及一些常

4、用的高级控件。主要流程图如下:新建矩形直线画笔时间简易绘图板文件查找关于打开保存退出工具栏状态栏颜色橡皮椭圆选择工具三 主要模块菜单栏及状态栏 菜单有 文件 ( 新建 打开 保存 退出) 查看 (工具栏 状态栏) 关于一 新建其中新建就是创建子窗体代码 Form1 pic = new Form1(); Pic.show();/创建一子窗体 然后调用Show()方法显示该窗体二 打开 打开是执行 muopen_Click事件处理程序.当点击 文件打开 的时候就会打开到设定的目录下,并显示要打开的文件类型代码分析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.Length0)pictureBox1.Image =Image.FromFile(openFile1.FileName)

6、;首先创建打开文件对话框openfile1 InitialDirectory是文件初始目录的符串 Filter为文件名筛选器字符串,用于决定打开时出来的类型, FilterIndex 就是打开时的索引值,打开时的类型. RestoreDirectory 表示在关闭对话框时是否还原到当前目录. If判断是否点击了打开按pictureBox1.Image =Image.FromFile(openFile1.FileName)是加载选定的文件.三 保存 SaveFileDialog 类表示一个通用对话框,创建子类并调用ShowDialog方法来显示对话框,允许指定用于保存文件选项. 通过对话框能够将

7、pictureBox1控件中的文件存盘. 代码分析SaveFileDialog saveFile1= new SaveFileDialog();saveFile1.Filter=GraphicsFile(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|AllFiles(*.*)|*.*;saveFile1.ShowDialog();saveFile1.FilterIndex=4; saveFile1.RestoreDirectory=true; saveFile1.InitialDirectory= c:; if (saveFile1.FileName!=)this.

8、pictureBox1.Image.Save(saveFile1.FileName,System.Drawing.Imaging.ImageFormat.Bmp);this.Text=saveFile1.FileName;elseMessageBox.Show(必须输入文件名);同打开一样首先创建一另存为对话框 当单击保存的时候则ShowDialog方法的返回为DialogResult.OK 否则为 DialogResult.Cancel然后再判断是否保存,调用pictureBox1控件的SavaFile方法,要指定要保存的文件,并且指定类型!四 退出 当单击退出按钮的时候就可以执行下列代码,

9、 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.ComponentModel;using System.Windows.Forms;using System.Data;using System.Drawing.Drawing2D;using

10、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.Empty;private bool isMouseDown = false, isMouseUp = false;ArrayList addArray = new ArrayList()

11、;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;public struct SharpTypepublic string type;public Point p1, p2;public Color foreColor, backColor;p

12、ublic 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 = backColor;this.brush = brush;static void Main() Application.Run(new Form1();private void menuItem

13、2_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=DrawEllipse;statusBar1.Panels0.Text=选择椭圆;if(e.Button=toolBarButton4)Form1.shape=DrawRectangle;statusBar

14、1.Panels0.Text=选择矩形;if(e.Button=toolBarButton5)Form1.shape=DrawLine;statusBar1.Panels0.Text=选择直线;if(e.Button=toolBarButton6)Form1.shape=DrawCurve;statusBar1.Panels0.Text=选择画笔; private void menuItem8_Click(object sender, System.EventArgs e)if(menuItem8.Checked=false)menuItem8.Checked=true;statusBar1.

15、Visible=true;elsemenuItem8.Checked=false;statusBar1.Visible=false;四 绘图板核心代码private void pictureBox1_MouseMove(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,

16、p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.Y ) );if(shape=DrawRectangle)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(sha

17、pe=DrawEllipse)g.DrawEllipse(new Pen(color,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(sha

18、pe=DrawCurve)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(DrawCurve, p1, p2, Color.Wh

19、ite, 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.Y ) );if(type.type=DrawRectangle)g.DrawRe

20、ctangle(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)g.DrawLine(new Pen(type.foreColor,1),type.p1,type.p2);if(type.type=DrawEr

21、aser)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 )this.isMouseDown = true;this.p1 = new Point( e.X, e.Y );private void pictureBox1_MouseUp(ob

22、ject 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(color,1), p1.X, p1.Y, Math.Abs( p1.X - p2.X ), Math.Abs( p1.Y - p2.Y ) );addArray.Add( new SharpType(

23、 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.Y ) );addArray.Add( new SharpType(DrawRectangle, p1, p2, color, Color.Empty, Brushes.Black ) );if(shape=DrawLine)g.DrawLine(ne

24、w Pen(color,1),this.p1,this.p2);addArray.Add( new SharpType(DrawLine, p1, p2, color, Color.Empty, Brushes.Black ) );if(shape=DrawCurve)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

25、 Pen(Color.White,1),this.p1,this.p2);addArray.Add( new SharpType(DrawCurve, p1, p2, Color.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( Sharp

26、Type type in addArray )if(type.type=DrawEllipse)e.Graphics.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.Y ) );if(type.type=DrawRectangle)e.Graphics.DrawRectangle( new Pen(type.foreColor,1), type.p1.X, type.p1.Y, Math.Ab

27、s( type.p1.X - type.p2.X ), Math.Abs( type.p1.Y - type.p2.Y ) );if(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.foreColo

28、r,100.0f),type.p1,type.p2);private 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(); 五测试效果图六:心得体会 设计,给人以创作的冲动。在画家眼里,设计是一幅清明上河图或是一幅向日葵;在建筑师眼中,设计是昔日鎏金般的圆明园或是今日一塑自由女神像;在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论