基于VC++MFC程序设计简易画图板.doc
《基于VC++MFC程序设计简易画图板.doc》由会员分享,可在线阅读,更多相关《基于VC++MFC程序设计简易画图板.doc(29页珍藏版)》请在咨信网上搜索。
1、包头师范学院本 科 学 年 论 文论文题目:基于VC+MFC程序设计-简易画图板院系:信息科学与技术学院专业:计算机科学与技术学号:姓名:指导教师:撰写学年: 2010至2011学年二零一零年十二月摘 要本软件是利用VC+这个强大的可视化编程工具开发的,软件主要功能包括图形的绘制、线型的设置、颜色的设置,图形文件的重绘和保存等功能.本文介绍了如何完成上述功能,同时详细阐述了画图系统的实现过程以及对画图系统所做的功能扩充。在画图软件设计上,其主要任务是:实现“绘制图形”、“图形的保存”两项功能。本软件具有实用性、稳定性、易用性,和可维护性的特点,应该说它应是一个开放性的软件,用户可以根据需要对其
2、功能进行扩充、完善与修改,使其符合自己的要求。总之,本软件是一个逐步完善的软件。关键词:VC+;MFC;绘图AbstractThis software is using vc + + this powerful visual programming tool development, software main functions including graphics rendering, linetype Settings, color setting, graphics file redraw of preserving and function。 The paper introduced
3、 how to accomplish these functions, and explains in detail drawing system realization process and to drawing system do function expansion。 In drawing software design, its main task is to achieve drawings, ”graphic save” two functions。 This software has practicability, stability, easeofuse, and maint
4、ainability characteristic, should say it should be an open software, the user can according to the needs of its functions were expansion, perfect and modification, make them comply with their requirements. Anyhow, this software is a perfect gradually software。Keywords:Vc + +; MFC; drawing目录引言1第1章vc+
5、6.0和MFC简介21.1vc+6。0简介21。2MFC简介2第2章基础知识22。1工程的新建32。2单文档简介42。3添加消息响应函数52。4资源52。5设备环境6第3章简易画图板的制作63。1设计目的63.2 总体设计73.3详细设计73。3.1点、直线、矩形、椭圆的绘制93。3。2连续线和扇形的绘制113。3。3画刷133.3。4设置对话框153.3。5颜色163.3.6打开与保存17第4章结果及结论174。1运行结果174.2结论18参考文献20附录:简易画图板主要程序代码21致谢31引 言计算机技术的发展,使人类社会进入了信息化和自动化,计算机智能识别也随着计算机的发展得到了迅速的发
6、展。特别是图形图像的计算机处理技术更是有了前所未有的进步和应用。计算机识别也逐渐的从图形图像处理的大环境下分离出来作为一门新的高科技研究领域出现。画图涉及到的学科很多,包括数字信号处理、工程数学、信息论、运筹学等,它与计算机、自动化、生物学、视觉心理和生理学、人工智能、智能信息处理等众多领域交叉、综合集成,有广泛的应用。该软件功能与Windows下附件中的画图软件有相似功能。本程序是在VC6。0平台上用MFC所编。绘制方面的功能主要包括绘制各种图元,包括直线、矩形、椭圆、扇形、连续线,用笔或画刷自由绘图。绘图时可以选择各种颜色,各种线型和线宽。软件支持保存和读取wmf格式的图形.该软件设计的设
7、计思想是面向对象程序设计的思想。面向对象技术是一个非常实用而强有力的软件开发方法.它具有许多特色。一是方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的.二是从生存期的一个阶段到下一个阶段的高度连续性,即在一个阶段所用到的部分与在下一个阶段所使用的部分是衔接的,所使用的技术经过生存期每一阶段后不改变。三是把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段.该软件是Windows下附件中的画图软件的辅助工具.他可以帮我们完成绘制wmf格式的图形,填充了画图程序不能完成wmf格式图形的空缺。由于笔者所学知识有限,在绘图功能上有许多方面不
8、能满足用户需求。希望读者提出宝贵的意见和建议。第1章vc+6。0和MFC简介1.1 vc+6。0简介VC+6。0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C+语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库.MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所
9、需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC+提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。1.2 MFC简介MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C+类的形式封装了Windows的API,它包含了窗口等许多类的定义.各种类的集合构成了一个应运程序的框架结构,以减少应用程序开发人员的工作量.其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC 6
10、.0版本封装了大约200个类,其中的一些可以被用户直接使用。例如CWnd类封装了窗口的功能,包括打印文本、绘制图形及跟踪鼠标指针的移动等;CsplitterWnd类是从CWnd类派生出来的,继承了基类或称父类CWnd类的所有特性,但增加了自己的功能,实现拆分窗口,使窗口至少可被拆分成两个窗口,用户可以移动两个窗口之间的边框来改变窗口的大小;CtoolBar类可以定义工具栏等.MFC命名的惯例是类的名字通常是由“C”打头;成员变量使用前缀“m_”,接着使用一个字母来指明数据类型,然后是变量的名称;所有的单词用大写字母开头。第2章 基础知识2。1工程的新建打开Microsoft Visual C+
11、 6。0 - 点击File New 在Projects中选择 MFC AppWizard (exe) ;在 Project name中输入工程的名字Graphic,在 Location中选择工程存放的路径。填完后点击OK按钮。(如图1)填完后点击OK按钮,弹出对话框(如图2)。在弹出来的对话框中我们可以选择生成三种不同类型的应用程序:单文档、多文档、对话框。单文档程序如记事本,在一个应用程序中只能对一个文档进行操作,降低了编程的复杂度并减少了运行程序时所需的资源。对某些小型应用(比如文本编辑器或小型图像编辑器)可以采用这种类型的窗口应用程序。多文档程序如PhotoShop,在一个应用程序中可以
12、同时对多个文档进行操作;对话框程序如QQ,应用程序的界面是对话框形式的。现对话框版本的程序更小一些。除了节省资源外,对话框版本的应用程序的加载速度也更快些。基于对话框的应用程序比完成相同功能的基于窗口的应用程序更简单有效.这里我们选第一个:单文档.选择完后点击Next,设置默认,最后点击Finish完成工程的创建。图1图22。2单文档简介生成单文档程序后,进行编译,在运行,我们可以看到以下的结果。如图3 图3在ClassView中,我们可以看到系统自动为我们生成了五个类:CApp , CDoc , CView , CAboutDlg , CMainFrame. 如图4图4CApp相当于C语言中
13、的main()函数。是程序的起始。 CDoc是用于处理程序中文档的类。 CView主要是处理客户区的可视化的操作的类。 CAboutDlg是处理关于对话框的类. CMainFrame是非客户区的一些资源的类。 我们主要是对CView 类进行操作。2。3添加消息响应函数 系统为我们生成了一个程序的框架,但是这个框架完成不了什么具体的功能。为了使程序程序完成我们想要做的事,我们要向这个框架中加入一些代码。 VC+程序的运行并不像C语言是按照顺序运行下来的。每当我们完成一个事件,系统就会发出特定的消息,程序就会跳到相应的消息响应函数中执行里面的代码.单击菜单中的View-Class Wizard(或
14、按快捷键Ctrl+W),将会弹出MFC Class Wizard对话框。在Class Name中选择CView,在Messages中选择WM_LBUTTONDBLCLK,点击右边的Add Function按键.这样我们就为程序添加了鼠标左键双击的消息响应函数,函数名为OnLButtonDblClk(UINT nFlags, CPoint point).我们点击Edit Code按键就可以进入消息响应函数中。 我们在消息响应函数中添加如下代码: AfxMessageBox(“Hello Word!”); 运行程序!当我们在客户区中双击鼠标左键时,我们可以看到效果(如图5)。 我们在完成双击鼠标左
15、键这个事件后,Windows便会发出WM_LBUTTONDBLCLK这条消息。我们的程序收到这个消息后,就会跳转到鼠标左键双击的消息响应函数内,执行里面的代码。 同样的,我们可以添加其他的消息响应函数,如鼠标左键按下,抬起,鼠标移动等(WM_LBUTTONUP、WM_LBUTTONDOWN、WM_MOUSEMOVE等).我们程序就是在这样的消息响应机制下运行的。 图52.4资源在ResoureView 里,我们可以编辑对话框、菜单、工具条、快捷键等资源。 点开Menu,可以看到一个ID为IDR_MAINFRAME的菜单。ID是一个标识,实际上是一个无符号整型常量,每一个资源在程序中都有一个唯一
16、的ID号.双击IDR_MAINFRAME,在右边的视图中双击帮助右边的虚线框,弹出菜单属性,在Caption中输入“画图,并将其关闭。双击画图菜单下面出现虚线框,在caption中输入“画线”后将其关闭。双击画线,在弹出的菜单属性中ID栏的ID_MENUITEM32775改成ID_MENUITEM_LINE.同样方法在建一个“画圆”菜单项.注意:每个资源对应一个ID号,ID号的命名全部用大写字母,且要符合匈牙利命名法。我们为新的菜单项起名,如果我们选择了Popup,生成的菜单就还有下级子菜单;如果没有选择,菜单就没有下级菜单.我们同样可以在Class Wizard 中为我们生成的菜单添加响应。
17、 在Class Wizard 中的Object IDs中选中菜单的ID号,Messages中选择COMMOND,然后点击Add Function。这样,我们就为新建的菜单添加了点击的响应,我们同样可以点击Edit Code 编辑消息响应函数。 2。5设备环境 CDC是设备环境类的基类直接由CObject派生。是GDI的关键元素,它代表了物理设备。每一个C+设备环境对象都有相对应Windows设备环境,并通过一个32位类型的HDC句柄来标识。CDC类的虚拟性使我们可以很容易的做到编写同时适用于多种设备的代码。使用CDC类可以使我们的作图不用关心设备的问题. CClientDC和CWindowDC
18、是显示设备环境类,都是由CDC派生而来,区别在于CClientDC是窗口的客户区不包括边框、标题栏和菜单栏,(0,0)指客户区域的左上角.CWindowDC的(0,0)指整个屏幕的左上角,这意味着我们可以在显示器的任意地方绘图,包括窗口边框、标题栏和菜单栏等等.CWindowDC一般应用在框架窗口,而不是视图窗口。 CDC对象被创建后一定要在合适的时候将它删除掉,如果忘记了删除设备环境对象则会造成内存丢失。在每次绘图前,我们要获取设备环境,我们可以使用CDC* GetDC ( ) 函数来获取设备环境。在绘图完成后,使用void ReleaseDC(CDC pDC ) 函数释放设备环境。第3章
19、简易画图板的制作3。1设计目的设计一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开以及笔刷的使用.3.2 总体设计设计图如图6简易画图板文件绘图笔刷打开保存点直线矩形椭圆扇形连续线设置颜色简单笔刷位图笔刷透明笔刷线宽线型图63.3详细设计首先,新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。为此程序添加一个子菜单,菜单名称为“绘图,并为其添加六个菜单项,分别用来控制不同图形
20、的绘制.当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。表1添加的菜单项菜单项ID菜单项名称菜单项命令响应函数IDM_DOT点OnDotIDM_LINE直线OnLineIDMRECTANGLE矩形OnRectangleIDM_ELLIPSE椭圆OnEllipseIDM_SHANXING扇形OnShanxingIDM_LIANXUXIAN连续线OnLianxuxian在程序运行以后,当用户单击某个菜单
21、项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述:private:UINT m_nDrawType;接着,在视类的构造函数中将此变量初始化为0,程序代码如下:CGraphicView::CGraphicView()/ TODO: add construction code here m_nDrawType=0;利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值.程序代码如下:void
22、 CGraphicView::OnDot() / TODO: Add your command handler code herem_nDrawType=1;void CGraphicView::OnLine() / TODO: Add your command handler code herem_nDrawType=2;void CGraphicView::OnRectangle() / TODO: Add your command handler code herem_nDrawType=3;void CGraphicView:OnEllipse() / TODO: Add your c
23、ommand handler code herem_nDrawType=4;void CGraphicView:OnShanxing() / TODO: Add your command handler code herem_nDrawType=5;void CGraphicView::OnLianxuxian() / TODO: Add your command handler code herem_nDrawType=6;3。3.1点、直线、矩形、椭圆的绘制对于直线、矩形和椭圆,在绘制时都可有两点来确定其图形.当鼠标左击时得到一个点,当鼠标左键松开时得到另外一个点。为视类CGraphicV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VC MFC 程序设计 简易 画图板
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。