简单画图程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

面向对象程序设计课程设计报告设计题目:简单画图程序的设计学院:信息工程学院专业:计算机科学与技术(交通)学号:姓名:指导教师:2015年1月4日目录1.设计目的和内容­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11.1.设计目的­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­11.2.设计内容­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­12.基本功能­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­12.1.图形样式­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­12.2.颜色样式­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­22.3.画笔样式­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­22.4.线型选择­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­33.设计思路­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­34.软件设计­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­54.1.设计步骤­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­54.2.界面设计­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­84.3.关键功能的实现­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­95.心得体会­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­116.参考文献­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­117.附录­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­117.1.调试报告­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­117.2.调试结果­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­127.3.关键源代码­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­121.设计目的和内容1.1.设计目的1、学习VisualC++的MFC开发程序的步骤2、综合运用所学的类、继承和多态的知识3、进一步掌握程序调试的方法1.2.设计内容1、利用MFC的向导,创建基于单文档的应用程序2、编程实现,绘制线、圆、矩形的功能3、能够设定当前要画的图形样式(最少为以上3种)和图形颜色(最少能够设为以下4种颜色:黑、红、绿、蓝)4、当窗口重绘后,还能保持原来的图形5、选做1:能够选中某些已绘制的图形,并删除之6、选做2:能够保存已绘制的图形,下次打开时恢复原状2.基本功能2.1.图形样式在菜单栏的设置里面有图形样式的选择,可以点击选中也可以在工具栏里点击图形的图标,能够实现绘制点、直线、矩形和椭圆的功能。第1页2.2.颜色样式在菜单栏的设置里面有颜色样式的选择,可以点击选中也可以在工具栏里点击颜色的图标,除了能够实现红、绿、蓝、黄、黑的普通选择,同时还加入了一个颜色板,点击更多(…)可以在调色板上选择任意的颜色。菜单和工具栏选色:调色板选色:2.3.画笔样式在菜单栏的设置里面有画笔样式的选择,可以点击选中即改变画笔的线宽,也可以在工具栏里点击表示画笔宽度的快捷按钮,线宽有从标准、一般、略粗和更粗的选择。第2页2.4.线型样式在菜单栏的设置里面有关于线型的选择,可以点击菜单栏的选项也可以在工具栏里找到表示线型的三个按钮,点击即可修改所选的线型。3.设计思路1、根据需要用到的变量设定变量并进行初始化2、选择相应的图形、颜色、画笔、线型之后就响应相应的消息,给需要的变量赋上相应类型的值3、鼠标按下响应函数OnLBottonDown(),捕捉当前位置得到坐标起点,鼠标弹起响应函数OnLBottonUp()得到另一个坐标则可以进行图形绘制第3页4、选择其他属性即可进行绘制不同颜色、线宽、线型的图形5、流程图如下:第4页开始初始化m_color颜色,m_type图形类型,m_lstyle线型,m_pwidth画笔宽度,m_point起点,point终点。选择图形改变图形属性默认(空)选择颜色改变画笔属性默认(黑色)选择笔宽4.软件设计4.1.设计步骤1、创建一个MFCAppWizard工程命名为”ZYFdraw”,建立一个单文档,系统会自动生第5页结束选择线型改变画笔属性默认(1)改变画笔属性默认(实线)按下鼠标响应OnLButtonDown()函数,得到坐标起点,开始绘图。弹起鼠标响应OnLButtonUp()函数,鼠标置于终点,得到图形。成相应的类。第6页2、编辑菜单,在菜单里面增加对应的菜单项并设定对应的ID,需要改变属性只要点击菜单项就可以。3、在相应的消息函数添加代码,实现功能第7页4.2.界面设计在菜单里面增加绘图按钮,包括“图形样式”、“颜色样式”、“画笔样式”和“线型样式”四个子按钮;在工具栏里面添加相应的快捷按钮,更方便于绘图时候的操作。添加菜单栏的项目:菜单项ID菜单项名称菜单项命令响应函数IDM_DDOT点OnDdotIDM_DLINE直线OnDlineIDM_DRECTANGLE矩形OnDrectangleIDM_DELLIPSE椭圆OnDellipseIDM_CRED红色OnCredIDM_CGREEN绿色OnCgreenIDM_CBLUE蓝色OnCblueIDM_CYELLOW黄色OnCyellowIDM_CMORE更多(…)OnCmoreIDM_CPSLIM标准OnCpslimIDM_CPMIDDLE一般OnCpmiddleIDM_CPBIG略粗OnCpbigIDM_CPMORE更粗OnCpmoreIDM_LSTYLE实线OnLstyleIDM_LSTYLEDASH虚线OnLstyledashIDM_LSTYLEDOT点线OnLstyledot第8页添加工具栏的项目:菜单项ID菜单项名称菜单项命令响应函数IDM_SDOT点OnSdotIDM_SLINE直线OnSlineIDM_SRECTANGLE矩形OnSrectangleIDM_SELLIPSE椭圆OnSellipseIDM_SRED红色OnSredIDM_SGREEN绿色OnSgreenIDM_SBLUE蓝色OnSblueIDM_SYELLOW黄色OnSyellowIDM_SPSLIM标准OnSpslimIDM_SPMIDDLE一般OnSpmiddleIDM_SPBIG略粗OnSpbigIDM_SPMORE更粗OnSpmoreIDM_SLSOLID实线OnSlsolidIDM_SLDASH虚线OnSldashIDM_SLDOT点线OnSldot界面如下:4.3.关键功能的实现当鼠标点击菜单栏或者工具栏响应的图形和属性按钮时,即可改变所要画的图形以及画笔的属性。4.3.1.绘图:左键点击工具栏的四个绘图按钮的任意一个可以选择自己需要的图形(点、直线、矩形、椭圆),如下图所示:第9页4.3.2.颜色:左键点击工具栏的四个颜色按钮可以选择颜色(红色、绿色、蓝色、黄色)还可以在菜单栏的绘图的颜色样式里面点击更多出现调色板选择更多的颜色,如下图所示:4.3.3.笔宽:左键点击菜单栏的画笔样式或工具栏以下四个按钮即可改变画笔的宽度,如下图所示:第10页4.3.4.线型:左键点击菜单栏的线型样式或在工具栏点击以下三个按钮可以选择实线、虚线和点线的线型,如下图所示:5.心得体会这次课程设计我成功的完成了。通过本次的课程设计,我学会了运用鼠标点击完成绘制点、直线、矩形和椭圆的绘图功能。编写一个简单的绘图程序,完成了绘图时图形、颜色、画笔宽度以及线型的选择。基于这次的课设,对菜单界面的建立,消息响应函数处理,创建句柄都比较熟悉了,但是难的地方在于代码的编写。在这次的课设中由于要绘制图形,所以比较关键的是坐标(m_point,point)两个起点和终点的。因此,我设立了消息响应函数OnLButtonDown()以及OnLButtonUp()还获取鼠标的当前坐标和终点坐标。绘制图形也是在OnLButtonUp()的函数里面实现的。为了实现图形的重绘,定义了一个Cdraw的类,在里面重新定义了变量用于保存已绘的图形,其中还是使用了MFC系统自带的一个CPtrArray动态数组。在OnLButtonUp()里面绘制图形,通过自定义的类Cdraw与动态数组CPtrArray在OnDraw()里面实现重绘,这样使得整个程序的结构较为清楚和简便。通过这次的课设让我明白了即使一个小小的绘图程序都是如此复杂,更何况是电脑里面的成千上万的程序呢,自己知道的东西还是太少了,以后要加强学习。6.参考文献【1】孙鑫VC++深入详解(修订版)电子工业出版社2012年【2】梁普选VisualC++程序设计与实践清华大学出版2005年【3】严华峰VISUALC++课程设计案例精编(第二版)中国水利水电出版社2004年【4】魏亮、李春葆等VisualC++程序设计例学与实践清华大学出版社2006年7.附录7.1.调试报告开始时没有创建Cdraw类来保存已经绘制的图形,所以每次在绘好图形以后拉动窗口,图形被刷新就消失了。在创建了Cdraw类后我们通过系统自带的动态数组保存已绘的图形,在在OnDraw()里面调用以保存的图形,则在拖动窗口时图形不消失。第11页7.2.调试结果1、编译运行后的窗口如下:2、改变绘图的画笔粗细,颜色、形状得到的窗口如下:7.3.关键源代码1、在CZYFdrawVIEW类的头文件中加入私有成员变量:private:intm_lstyle;intm_pwidth;CPtrArraym_cptArray;第12页COLORREFm_color;CPointm_point;UINTm_type;2、其中各个成员变量的代码实现如下:voidCZYFdrawView::OnDdot()//点{//TODO:Addyourcommandhandlercodeherem_type=1;}voidCZYFdrawView::OnDline()//直线{//TODO:Addyourcommandhandlercodeherem_type=2;}voidCZYFdrawView::OnDrectangle()//矩形{//TODO:Addyourcommandhandlercodeherem_type=3;}voidCZYFdrawView::OnDellipse()//椭圆{//TODO:Addyourcommandhandlercodeherem_type=4;}//颜色voidCZYFdrawView::OnCred()//红色{//TODO:Addyourcommandhandlercodeherem_color=RGB(255,0,0);}第13页voidCZYFdrawView::OnCgreen()//绿色{//TODO:Addyourcomm

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功