c++课程设计(简易绘图程序).doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c课程设计(简易绘图程序)

目 录 1、需求与功能分析 2 2、系统总体框架 3 3、模块设计与分析 4 3.1画图模块 4 3.2贴图模块 4 3.3窗口模块 5 3.4菜单模块 5 3.5工具栏与状态栏模块 5 4、类的设计与分析 5 4.1、CAboutDlg类 5 4.2、CChildFrame类 5 4.3、CDib类 5 4.4、CDrawingDoc类 6 4.5、CDrawingView类 7 4.6、CMainFrame类 8 4.7、CSettingDlg类 8 5、特色算法分析 9 5.1 CDib类中的显示bmp位图 9 5.2 CDrawingView类中的画图部分 11 6、功能测试 14 7、存在的不足与对策 17 8、程序源代码 18 9、使用手册 18 10、参考文献 21 1、需求与功能分析 为了检验一个学期以来自己学习c++这门课程能够学到多少知识,加上原来就对图像处理就比较感兴趣,曾经更有想过要做一个可以合成红蓝3D图片的一款软件,就是那种需要带上红蓝眼镜才可以看到3D效果的那种图片,自己也有用photoshop做过这样的图片,但是photoshop需要调很多东西才能合成这样的图片,而且还要用相机送两个不同的角度拍两张照片作为源图片去合成红蓝3D图片,虽然我知道原理并不难,但是当我选择了” 简易绘图程序”这个课程设计的题目之后,才发现每实现一个功能都需要花很多的精力,而且实现那些功能之后还会发现各种各校的bug,需要细心去寻找解决的办法。如今课程设计也要上交,一样还有很多我想实现的功能都还没实现,最终也没有实现我想要实现的功能---合成红蓝3D图片。只做了一些简单的绘图功能。 功能分析,目前这个软件的主要功能有如下: 画直线:通过OnLine()函数实现。 画矩形:通过OnRectangle()函数实现。 画椭圆:通过OnEllipse()函数实现。 铅笔工具:可以画任意线条。通过OnPencil()函数实现。 橡皮擦:可以擦除所画的线条。该功能还没实现。 右键弹出菜单:可以在客户中点击鼠标右键,快速选择常用菜单。通过OnContextMenu函数实现。 状态栏显示鼠标移动的坐标:在程序的右下角显示,通过OnUpdateX(CCmdUI *pCmdUI)和OnUpdateY(CCmdUI *pCmdUI)这两个函数实现。 画图颜色选择:可以画任何颜色的线条,通过OnEditColor()函数实现。 读取bmp位图:可以在电脑中选择一个bmp位图,在程序中显示出来,通过新建一个Cdib类来读取bmp文件信息再view类和Doc类调用来显示该位图。 保存为bmp位图:可以将在程序所画的图形保存为一幅bmp图片,通过view中的SaveAsBmp(CString filename)实现。 线条类型及线宽的设置:可以将画出的线条设置成实线、虚线、点线,还可以设置线条的粗细,通过示例这一功能可以立刻显示所选择线条的粗细及线型。通过新建CSettingDlg类,再在view类中调用OnSetting()函数实现画笔的对话框,CSettingDlg类中的OnPaint()函数是实现示例功能的。 窗口的重绘时不擦除原来的内容:可以在窗口发生变化时,窗口的内容不消失,程序在窗口尺寸发生变化时,将会发送WM_PAINT消息,这时首先会擦除窗口背景,然后进行重绘操作,这样就把窗口中先前绘制的内容擦除了。我是使用双缓冲来解决这个问题的,双缓冲设计思路:如果只是为了让窗口闪烁不那么厉害,避免背景色的填充是最直接的办法。但是那样的话,窗体上会变的一团糟。因为每次绘制图象的时候都没有将原来的图象清除,造成了图象的残留,于是窗体重绘时,画面往往会变的乱七八糟。所以单纯的禁止背景重绘是不够的。我们还要进行重新绘图,但要求速度很快,于是想到了使用 BitBlt函数。它可以支持图形块的复制,速度很快。我们可以先在内存中作图,然后用此函数将做好的图复制到前台,同时禁止背景刷新,这样就消除了闪烁。以上就是双缓冲绘图的基本的思路。OnLButtonUp(UINT nFlags, CPoint point)函数里面,也有一部分打码写在了OnDraw(CDC* pDC)函数里面。 2、系统总体框架 图1 总体框架 3、模块设计与分析 3.1画图模块:该模块的大部份功能都写在了view类里面,这样造成了后期的修改造成了一定的影响,对于排错,修复bug增加了难度,对于初次使用mfc做一个相对大一点的程序,在函数分配,类的建立都有很多不足的地方。该模块也是此次程序的重点模块之一,主要

您可能关注的文档

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档