- 47
- 0
- 约4.93千字
- 约 20页
- 2017-05-12 发布于河南
- 举报
C画图板
C++课程设计之画图板程序
第一部分 创建MFC应用程序
首先,打开VS2010,新建工程文件,文件名设置为DrawingBoard.cpp。设置应用程序类型为单个文档,完成创建,如图1。
图1 新建工程文件
在资源视图中,打开Menu选项卡,选择IDR_MAINFRAME,创建一个名为绘图的文件选项。
图2 创建文件选项
第二部分 实现绘图功能
同样的,在绘图选项的下拉菜单中我们创建三个不同的选项名,即:点、线、矩形、椭圆,并分别设置它们的ID为IDM_DOT,IDM_LINE,IDM_RECTANGLE,IDM_ELLAPSE。如下图:
图3 创建下拉菜单选项
接下来我们为点这一菜单项在CDrawingBoardView类中添加事件处理程序,如图:
图4 为菜单项(点)创建事件处理程序
同理,为线、矩形和椭圆添加事件处理程序并编辑它们的代码,如下图:
图5 编译事件处理程序代码
在CDrawingBoardView类中添加成员变量,变量名设置为m_nDrawType,变量类型为UINT,访问为private。如下图:
图6 创建成员变量m_nDrawType
随后,在CDrawingBoardView()函数中为刚定义好的变量初始化,设置为0。变量m_nDrawType的作用在于,供给用户选择绘制的图形类型(点、线、矩形和椭圆)。在刚才设置好的响应函数分别设置该变量的值,m_nDrawType=1表示为点、m_nDrawType=2表示为线、m_nDrawType=3表示为矩形、m_nDrawType=4表示为椭圆。如下:
图7 设定m_nDrawType在不同响应函数中的值
在在CDrawingBoardView类中添加成员变量,变量名设置为m_ptOrigin,变量类型为UINT,访问为private,并将其初始化为0。这个变量用于存储光标的起始点。如下图:
图8 初始化成员变量m_ptOrigin
打开类向导,在类CDrawingBoardView中添加鼠标左键按下和松开的消息响应函数。如图:
图9 创建鼠标左键的响应函数
在鼠标左键按键按下这一响应函数中将坐标赋值给成员变量m_ptOrigin。如图:
图10 对变量m_ptOrigin赋值
在鼠标左键松开这一响应函数中,通过编写switch语句,使得用户可以对绘制的图形进行选择,例如:如果m_DrawType=3,则选择矩形。并且将绘制图形的函数分别写在对应的case语句中。如下:
图11 在switch语句中编写图形程序
完成后,我们继续添加一个名为CGraph的类。创建这个类的目的是保存图形的特征,即起始点、终点和图形类型。在类中我们写入下述语句:
图12 在CGraph类中保存图形特征
接下来,我们创造一个成员变量m_ptrArray用来保存CGraph的地址,如下:
图13 添加成员变量m_ptrArray
随后我们回到DrawingBoardView()中,在结尾处存储类地址,如下:
图14 存储类CGraph的地址
编译运行的结果如下:
图15 编译结果
通过上图我们可以看出,这一图形绘制程序有个很明显的问题,那就是图形之间重叠的部分会互相遮挡。为了改善这一问题,我们定义一个CPen类型的变量拥有设置画笔,并且将画刷改为透明的。如下:
图16 定义CPen类型变量并设置透明画刷
再次编译运行,结果如我们预期一样,图形间互相重叠的问题得以解决,如下图:
图17 编译结果
第三部分 添加图形的修改菜单选项
上面部分中我们已经完成了画图板的基本功能,可以通过用户选择实现不同图形的绘制。接下来我们便完成画图板的其它功能,即选择线宽、线型和颜色。
1. 线宽选项的编写
首先我们在资源视图中新建一个对话框,并将它的Caption改为Setting。如下:
图18 创建Setting对话框
然后我们在该对话框界面上添加两个控件,即文本框和编辑框。文本框用于显示我们改写选项的名字而编辑框用于接收我们输入的线框值。如下图:
图19 创建线宽的编辑框
通过类向导,我们在CSettingDlg这个类中添加成员变量m_nLineWidth。变量类型为UINT,如下图:
图20 在CSetting中添加变量m_nLineWidth
在菜单编辑窗口绘图的下拉菜单中添加设置按键,并且设置其ID号为IDM_SETTING。打开类向导,通过IDM_SETTING添加命令响应函数,如下图:
图21 为对话框添加消息响应函数
在其响应函数OnSetting()中添加函数DoModal来显示对话框。语句如下图:
图22 添加DoModal函数来显示对话框
上述代码中,我们用m
您可能关注的文档
- 2014年6月份短学期——软件工程与开发实践1(题目).doc
- 2014年9月份考试Java程序设计第三次作业.doc
- 2014年9月考试可视化程序设计(VB)_A_卷.doc
- 2014年平安建校上报材料 文档.doc
- 2014设计题.doc
- 2015年高职楼宇项目国赛样题6.1发布.doc
- 2015春VB复习资料(2015-6-14).doc
- 2015秋九年级数学上册 21.2.2 公式法同步练习1 (新版)新人教版.doc
- 2016年全国硕士研究生入学统一考试英语二考研真题(完整版)凯程首发.doc
- 2016年职称计算机考试word2003模块软件.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- ntvf调试资料解读.doc VIP
- 电影《色.戒》的叙事伦理.doc VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 佳能EOS1500D基本使用说明书说明书.pdf VIP
- 上海大学2023-2024学年第1学期《高等数学(上)》期末考试试卷(B卷)附参考答案.pdf
- 渣打银行(香港)有限公司.PDF VIP
- 2024年吉林高职高专院校单招统一考试《语文》试卷及参考答案.pdf VIP
- JSG202515机器人系统集成应用技术样题-学生组.docx VIP
- 棋盘博弈采购法战略体系.ppt VIP
- 节后复产复工安全知识考试试卷及答案.docx
原创力文档

文档评论(0)