MFC程序设计实践-画板

电脑杂谈  发布时间:2019-08-09 03:04:23  来源:网络整理

mfc 画图程序_mfc简易画图板_简易三维画图软件

程序设计实践 设 计 报 告课题名称:基于 VS2010 下画笔的设计 学生姓名: 班 级: 班内序号: 学 号: 日 期:2015.6.61. 课题概述1.1 课题目标和主要内容编写类似于 windows 下附件中的画笔相似的简陋画板,能实现画斜线,曲线,圆等等,并希望实现一些工具系统,如橡皮擦,颜料的色彩和长度的选择,背景色彩的设置等等。在 VS2010 上用 MFC 编程技术编写简易画板。1.2 系统的主要系统 2. 系统设计2.1 系统整体框架 绘图程序图形绘制绘图工具画笔,画刷,铅笔mfc简易画图板,背景重绘2.2 系统详细设计[1] 模块划分图及描写画图程序窗口系统菜单系统绘图系统窗口系统:大部分由编译器自动生成,做了些许改动,增设窗口名称为“DLH 的画笔~~”以及右键改为十字形。菜单系统:由编译器自动生成,有文档,编辑,字段等等,添加了描绘图形,描绘工具两个大菜谱,其下有绘制斜线,曲线,圆,增设画布,画刷,铅笔等小菜单。绘图系统:自己编写,实现这些简单图形的绘制及绘图的设置系统,系统实现的源码写在 CPaintView 类里边,是本次实验的重点系统。

简易三维画图软件_mfc简易画图板_mfc 画图程序

[2] 类关系图及描写 CDialogCFrameWndExCViewCDocumentCWndAppEx派生CDialogEx派生CAboutDlg派生CMainFrame派生CPaintView派生CPaintDoc派生CWndApp 1. CDialog,CFrameWndEx,CView,CDocument,CWndAppEx 类是 MFC 封装好的子类,由编译器自动生成。 2. CDialogEx,CAboutDlg,CMainFrame,CPaintDoc,CPaintView,CWndApp 类继承于相关类,在构建 Paint 工程时生成。 3. CMainFrame 类处理对窗口框架的操作,包含菜单栏;CPaintView 类处理对窗口视图的操作,画图操作可能放到这个类中处理。[3] 程序流程图及描写进入画板绘制基本图形绘制工具选择重绘保存结束进入画板界面以后可以选择直接用默认的颜料画刷进行画图(斜线,曲线,圆等),在作图过程中更改绘图工具(画布线型,线宽,色彩,画刷,铅笔等),用新选择的工具继续画图,也可以在一开始就选择工具进行画图,最终移图窗口,最小化图形会保留。

mfc简易画图板_简易三维画图软件_mfc 画图程序

2.3 关键算法分析硬件 1:OnLButtonDown()[1] 算法系统:鼠标左键按下=消息的传闻响应函数,获取鼠标移动的起点并存储。[2] 算法完全精神:鼠标左键一按下,窗口便调用鼠标移动这个传闻的传闻响应函数,即 OnLButtonDown (),记录起点。[3] 算法分析:硬件 2:OnMouseMove()[1] 算法系统:画图操作都是痛过 鼠标移动和鼠标点击完成的,其中实现动态绘图鼠标移动又是关键;这个变量中包括了许多画图操作,如描绘曲线,圆形,圆等。[2] 算法完全精神:鼠标一移动,窗口便调用鼠标移动这个传闻的传闻响应函数,即 OnMouseMove(),借助 switch—case 语句便能执行不同的图例绘制系统。[3] 算法分析: (1) 画图前期准备,如颜料,画刷的建立: (2)动态描绘曲线: (3)动态描绘椭圆:(4)动态描绘矩形: (5)动态描绘圆:(6)橡皮:硬件 3:增设画布,画刷等: [1] 算法系统:实现绘图工具的设置[2] 算法完全精神:为不同的风波添加消息响应函数,在其中添加操作。[3] 算法分析:(1) 设置画布线宽为 3: (2) 设置画布颜色为红色: (3)设置画布线型为虚线: 算法 4:OnDraw() [1] 算法系统: 当窗口最小化或移动时图象保留不会消失,实现重绘功能。

mfc简易画图板_简易三维画图软件_mfc 画图程序

[2] 算法完全精神: 当窗口最小化或移动的时候流程会自动读取 OnPaint()变量来进行重绘,于是可以在 OnPaint()变量中添加重绘指令,所以,所以 OPaint()变量执行时会自动读取 OnDraw()变量,但是可以将重绘指令写在 OnDraw()变量中。[3] 算法分析:在 OnDraw()变量中加入以上代码: 算法5:PreCreateWindow() [1] 算法系统: 初始化窗口式样[2] 算法完全精神:直接读取win32中注册窗口类的变量AfxRegisterWndClass()设置对话框样式。[3] 算法分析:3. 程序运行结果判断 4. 总结4.1 课题的难题和关键点初学 MFC,完全不了解它的传闻处理模式是本次实验难点所在,通过看 MFC 入门读物逐步了解它的消息映射机制,所以在实践中加深理解。关键:影像动态描绘原理,需要在鼠标移动的时候记录鼠标经过的每一点mfc简易画图板,所以更新起点和终点;重绘实现方式,可以通过时钟变量存储鼠标经过的每一点,并在 OnDraw()变量中用这种点进行重绘,也可以用位图实现。 4.2 本课题的称赞 1. 对课题的称赞:简陋画板的制作是一个很好的入门 MFC 的方式,通过菜单的添加加深对资源的理解;通过事件的传闻响应函数的添加加深对 MFC 消息处理制度的理解;通过 CPen,CBrush 等类的应用加深对 MFC 封装的类及类之间的继承派生关系的理解;通过重绘功能的实现加深对 MFC 程序句柄读取机制的理解,等等。

mfc 画图程序_简易三维画图软件_mfc简易画图板

2. 对本次实验完成状况的称赞:通过认真完成此次试验,基本掌握了 MFC 消息映射机制,能灵活利用这些制度实现一些系统,如颜料的设置就是在认知消息响应函数的系统的基础上自己想出来的实现方式,但是实现出来得系统简单,也不是那么用户友好,但这是明白并应用的成效,其实,更好的实现方式便是借助对话框,让用户输入数据,这种更灵活,更适应实际才能,这就涵盖到添加对话框资源,为其创建一个类如果在这个类中添加需要的变量及数据成员的操作。 3. 在画图的过程中,常常需要撤销,所以本次实验并没有实现这一系统,是一个需要改进的地方,同样,不能打开和保留影像,使这个画图软件失去了实用价值,它的实现需要对 CPaintDoc 类进行操作。4.3 心得体会1. 这课时开始接触 win32 编程,了解到 API 函数是 Windows 提供给应用程序的编程接口, 任何用户应用程序必须运行在API函数之上. 直接使用API编程是了解操作系统运行细节的绝佳方法, 而且熟知 API 函数作为对流程开发者的一个最完全的要求.如果在开发大型功能的时候, 往往并不完全直接使用 API 函数, 而是使用 MFC 类库框架流程. MFC 对 90%以上的 API 函数进行了面向对象化包装, 完全体现了对象化程序设计的优点, 是当前流行的插件,此次实验使用的最多的 CPen 类和 CBrush 类,这两个类都是继承于 CGdiObject 类,这些都是 MFC 封装好的类,使用起来更加便捷。

2. 当工期中的函数较多的时候,命名也是要有一定标示性,即名称与它的意义有一定联系,例如此次实验中画图的起点命名为 m_ptOrigin,终点命名为 m_ptNext,存储画笔线型的函数命名为 m_PenStyle,水彩线宽的函数命名为 Width 等等。3. 由于 MFC 对许多类进行了包装,方便程序开发者直接使用,MSDN 对那些类都有具体的说明,包含它的构造函数,变量成员,数据成员等,也是充分利用这个工具查询需要的变量。 5. 参考文献 [1]《程序设计实践》【刘瑞芳 肖波 徐雅静 许桂平 黄平牧编著】[2]《深入浅出 MFC》【侯俊杰著】


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-118565-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...