施磊磊的作业简易绘图工具.docx
《施磊磊的作业简易绘图工具.docx》由会员分享,可在线阅读,更多相关《施磊磊的作业简易绘图工具.docx(30页珍藏版)》请在冰豆网上搜索。
施磊磊的作业简易绘图工具
一、可行性分析
1.1问题描述
这次的C#课程设计我做的是简易绘图板,通过C#编程来实现简单的直线、矩形、圆形等简单图形的绘制,可以实现文件的打开、保存、修改大小、改变图画的颜色、画线的粗细、以及样式等,是一个比较简单的绘图系统。
这次课程设计是利用C#的编程思想以及组件开发原理来完成系统的设计,突出C#语言与其它语言不同点(即体现C#的高级功能,如属性概念、接口、事件、委托等),体现可视化编程的基本目标,如系统带有菜单、状态栏以及一些常用的高级控件。
1.2可行性分析研究
可行性分析实质上是进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计,其目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
它通过对项目的主要内容和配套条件,从技术、经济、社会等方面进行调查研究和分析比较,并对项目建成以后可能取得的财务、经济效益及社会环境影响进行预测,从而提出该项目是否值得投资和如何进行建设的咨询意见。
我们从以下三个方面研究项目的可行性:
1.2.1技术可行性
从我们所学知识和课设期间对软件的掌握及应用来考虑,做简易绘图板的要求不是太难,比较适合于C#想初学者。
课设是在学校进行的因此,在工具应用方面得到了很好的支持。
硬件设备的影响:
只需添置低档计算机;对现有软件的影响:
对现有软件不会产生冲突,选用VisualStudio2005开发工具;对系统运行的影响:
对使用的操作系统来说要有很好的兼容性、稳定性。
这些方面的要求学校机房的计算机足以满足,因此,在技术上是可行的。
1.2.2经济可行性
成本:
学校某机房的配备用以开发
收益:
全面增加开发经验,获得对1).NET基本结构以及C#语言的基本知识和技能;2)面向对象程序开发的基本思路和方法;3)利用所学的基本知识和技能,进行简单数据库应用程序设计等方面的知识的更好程度的掌握。
简易绘图板设计是学校安排的C#与.Net综合训练,为了提高学生在编程及总体设计上的能力,对以后步入社会,为社会做贡献打下了坚实的基础,对社会而言是有百利而无一害的,完全具有社会经济可行性。
综上,从整体上考虑,在经济上具有可行性。
1.2.3操作可行性
简易绘图板设计是一个简易的类似Windows画图工具的简单程序,设计中主要有菜单栏、状态栏等基本元素,能够实现简单的几何画图,也能够在鼠标控制下进行手动画图,操作起来简单易行,系统功能也是简单容易理解的,所以对用户来说,在操作上是完全可行的。
1.3结论意见
可行性研究近一步探讨并确认了问题描述阶段所确定的问题是有可行的解的,在对问题正确定义的基础上,通过分析问题,导出试探性的解,然后再复查,再修正……如此反复,最终提出一个符合系统目标的高层次模型。
值得注意的是:
可行性研究的目的不是解决问题,而是确定问题是否值得去解决。
当然,通过以上的可行性研究,我们已经确定了此问题在现阶段是值的去解决的。
二、项目开发计划
2.1项目背景及概述
通过一学期来对C#与.Net高级语言程序设计的学习,我已经掌握了一些基本的C#知识,对简单的程序设计的常用算法也有了一定的了解,还掌握了对图形的一些基本操作。
为了进一步加深理解、验证、巩固课堂教学内容,加深对可视化编程思想的理解,强化C#语言对程序流程控制、属性概念、事件、方法、接口、委托等的理解和使用;为了进一步提高编程能力、程序的调试能力,理论联系实际的能力;巩固所学的这些程序设计的方法,为了达到后续课程对实际编程计算能力的要求,特作“简易绘图板”这个小题目作为课程设计实践教学环节的题目,有助于培养综合运用所学知识解决实际问题的能力,可以充分发挥想象力和创新能力,也能让我看到自己在这方面的不足以便找到努力方向。
本系统基于C#技术,主要功能体现在各个模块上,系统各功能模块如下:
实现简单的绘图,如画直线、矩形、圆等,对所绘图形进行保存,打开各种图片,实现对绘图板的清除等。
2.2系统功能
本段详细阐述所选设计题目任务的具体内容及具体要求,分析设计软件的预期功能和涉及的C#知识点。
简易绘图板这个小程序要求能完成简单的图形绘制,如直线、圆、矩形等;能实现基本的线型线宽的改变;能实现绘图界面的清空;能通过菜单栏实现文件的保存、打开以及在帮助菜单中找到使用说明和其它问题解决办法。
该程序中涉及:
各种基本绘图语句的运用、条件语句的使用、事件的创建和使用、名字空间的创建及使用、预处理指令的运用等。
2.3开发工具和方法及设计过程
过程方法、分析与设计技术:
面向对象
体系框架及开发工具:
VisualStudio2005
系统设计过程如下图2—1所示:
图2—1系统设计过程
2.4预期效果
完成简易绘图板的设计,设计出一个类似于windows附件中绘图板的程序,以便实现以下功能:
1.画直线状态下点鼠标左键位置为直线的起点,松开鼠标所在位置点为终点;
2.画圆状态下圆心,松开鼠标所在位置点为圆上一点;
3.画矩形状态下点鼠标左键位置和松开鼠标所在位置点为所画矩形的两个对角点,加载窗体默认绘图为黑色细实线画直线,通过点击界面上的相应控件改变线型、颜色、粗细;
4.点击编辑|清除完成清除图纸上的内容的操作;
5.在菜单栏中添加保存、打开和帮助项,以及实现这些功能。
通过设计以上简易绘图板,最终使得我基本掌握了1).NET基本结构以及C#语言的基本知识和技能;2)面向对象程序开发的基本思路和方法;3)利用所学的基本知识和技能,进行简单数据库应用程序设计。
三、需求规格说明
这一阶段的任务强调将已收集并做分析处理的需求经编制整理形成规范化的可视文档,软件需求的标准是:
清楚、完整、一致、可测试,以下将从问题任务需求分析、数据流图及数据字典三个方面来完成。
3.1任务需求分析
需求分析是软件开发中相当重要的一个环节,需求分析做的好坏直接影响到系统的成功与否。
经过对简易绘图板设计进行分析调查,总结出简易绘图板的主要任务是通过鼠标实现简单的图形绘制,如直线、矩形、圆等,并且可以控制线条的颜色、粗细、样式等,另外实现对图形的打开、保存等功能。
随着近年来科技水平的发展,国民生活水平的提高,计算机在人们的生活中的作用也日益强大,人民对于运用计算机绘图的需求也是日益增多,因此产生了很多计算机绘图板。
这次课程设计我做的就是简易绘图板,是比较简单的绘图工具,对于客户的需求可能不能完全的满足,但是基于自己的能力只能是实现较简单的基本功能。
3.2系统流程图
系统流程图是描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等)。
系统流程图表达的是部件的信息流程,而不是表示对信息进行加工处理的控制过程。
它实质上是物理数据流图,描绘组成系统的主要物理元素以及信息在这些元素间流动和处理的情况,在表达分析员对现有系统的认识和描绘对未来系统的物理逻辑的设想时,是一个很好的工具。
下图3.2—1是系统流程图:
图3.2—1系统流程图
四、概要设计
概要设计又可称系统设计,这里所说的系统是指程序系统。
概要设计的主要任务是把需求分析得到的DFD转换为软件结构和数据结构。
设计软件结构的具体任务是:
将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。
数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。
此图形图像处理机具有如下功能:
1、能由鼠标控制绘制直线、矩形、圆,并能控制线条的颜色和粗细。
2、能打开和保存为图形文件。
3、能打开图片。
4、能通过参数对图片进行缩放。
我做的这个绘图板是一个简易的类似Windows画图工具的简单绘图板程序,我们设计了主要有菜单栏,工具栏等基本元素,能够实现简单的几何画图,也能够在鼠标控制下进行手动画图。
通过测试程序能够顺利运行,要求利用C#的编程思想以及组件开发原理来完成系统的设计。
突出C#语言与其它语言不同点(即体现C#的高级功能,如属性概念、接口、事件、委托等)体现可视化编程基本东西,如系统带有菜单、工具栏、状态栏以及一些常用的高级控件。
功能模块图可以让用户从整体上清晰地对系统有个较全面的了解,通过绘制功能模块图,程序员也可以对软件再一次的进行确认,以便可以使得所做软件在功能上不会有欠缺。
功能模块图可以促进对系统和流程的了解,深入了解复杂信息并利用这些知识做出更好的业务决策,这样做系统分析会提高效率。
它也便于IT和商务专业人员就复杂信息、系统和流程进行可视化处理、分析和交流。
画出功能模块图是软件工程过程中的一个重要环节,它将显示出工程所要实现的各种功能,并分类,然后软件工程师根据功能模块图来具体实现这些功能(通过代码)。
下图4—1为此简易绘图板的功能模块图:
图4—1简易绘图板的功能模块图
通过以上对系统的概要设计,使得我们基本上对系统有了较全面的了解,接下来应该开始系统的详细设计了。
五、详细设计
详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。
详细设计的目标有两个:
实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
5.1主要功能模块及算法
软件界面的设计,既要从外观上进行创意以到达吸引眼球的目的,还要结合图形和版面设计的相关原理,从而使得软件设计变成了一门独特的艺术。
本系统分界面主要有以下显示:
菜单栏及状态栏的实现。
菜单有:
文件(新建、打开、保存、另存为、退出等);编辑(图像大小、选取画笔颜色、选取画笔粗度、选取画笔样式、删除元素、清除、全选等)及帮助。
新建就是创建子窗体,[新建]菜单的Click事件处理程序调用InitializeComponent()方法,创建子窗体类的新实例,并显示该子窗体。
打开是执行FileOpen_Click事件处理程序,当点击【文件|打开】的时候就会打开到设定的目录下,并显示要打开的文件类型。
保存:
saveFileDialog1类表示一个通用对话框,创建子类并调用ShowDialog方法来显示对话框,允许指定用于保存文件选项,通过对话框能够将pictureBox1控件中的文件存盘。
同[打开]一样,首先创建【另存为】对话框当单击【保存】的时候则ShowDialog方法的返回为DialogResult.OK,否则为DialogResult.Cancel然后再判断是否保存,调用pictureBox1控件的SavaFile方法,要指定要保存的文件,并且指定类型。
以下简单说明,实现和上面相似。
EditSize_Click//事件控制图像大小
PenColor_Click//事件控制选取画笔颜色
PenWidth_Click//事件控制选取画笔粗度
PenStyle_Click//事件控制选取画笔样式
EditDelItem_Click//事件控制删除元素
EditClear_Click//事件控制清除
EditSelAll_Click//事件控制全选
HelpAbout_Click//事件控制帮助
状态栏有:
指针、直线、矩形、圆形等。
主要通过以下类实现:
Myline类//画直线程序
MyRectAngle类//画矩形的程序
MyCircl类//画圆形的程序
5.2类间关系及类图
程序的类之间总会存在一些关系,其中继承就是一种很重要的体现。
继承(Inheritance)是面向对象软件技术当中的一个概念,它是指一个对象直接使用另一对象的属性和方法。
继承的目的是实现代码重用。
以下列举本系统程序中存在的部分继承关系:
publicclassChooseWidth:
System.Windows.Forms.Form