- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC繪图程序实验报告
面向对象编程技术
综合编程实验报告—
图形绘制
院 系:**学院
学 号:********
姓 名:王克勤
版本号: 1
时 间:2011-12-05
1 实验要求 4
1.1 程序界面参考Microsoft画图程序 4
1.2 能够支持画直线、自由连线(随鼠标移动连线)、实体圆形、实体矩形、实体椭圆 4
1.3 支持区域选中(通过鼠标拖拽方框选中),并删除选中区域内所画的形状 4
1.4 支持各种笔形画图时的前景和背景色 4
1.5 支持图擦功能,选中图擦时,随着图擦的移动,根据图擦的大小,将图擦经过的区域中的形状相关部分清除 4
1.6 支持打印、打印预览功能,并保持图片所见即所得。支持将所画的内容保存为文件,格式为BMP格式 4
2 问题分析及方案设计 4
2.1 图形元素的分析设计 4
2.1.1 直线的分析设计 4
2.1.2 自由连线的分析设计 5
2.1.3 矩形的分析设计 5
2.1.4 椭圆的分析设计 5
2.1.5 圆的分析设计 5
2.2 画笔、画刷属性及背景色的分析设计 5
2.2.1 画笔、画刷属性的分析设计 5
2.2.2 背景色的分析设计 5
2.3 区域选择图形并删除的分析设计 5
2.4 图擦的分析设计 6
2.5 打印及打印预览的分析设计 6
2.6 保存功能的分析设计 6
3 实验过程及结果 6
3.1 设置程序外观 6
3.1.1 启动画面的设计 6
3.1.2 动态显示图标 7
3.1.3 创建自制绘图工具栏 7
3.1.4 创建自制菜单 8
3.1.5 设置状态栏 8
3.2 对话框的设计实现 9
3.2.1 笔刷属性对话框的实现 9
3.2.2 文本对话框的处理 10
3.3 图形的绘制 11
3.3.1 绘制直线 11
3.3.2 绘制自由连线 11
3.3.3 绘制矩形、椭圆和圆 12
3.3.4 更改背景色 12
3.4 输入文本 13
3.4.1 输入文字 13
3.4.2 简单计算器实现 14
3.4.3 图形擦除 14
3.5 图形保存 15
3.6 打印及打印预览 16
3.6.1 打印设置 16
3.6.2 打印预览结果 17
3.7 实验中遇到及待解决的问题 19
3.7.1 图擦的处理不够完善 19
3.7.2 图形选中擦除没有处理好 19
3.7.3 修改和移动图像位置的问题没解决 19
3.7.4 如何在视图窗口中转换两种逻辑坐标系 19
4 实验总结 20
实验要求
程序界面参考Microsoft画图程序
能够支持画直线、自由连线(随鼠标移动连线)、实体圆形、实体矩形、实体椭圆
支持区域选中(通过鼠标拖拽方框选中),并删除选中区域内所画的形状
支持各种笔形画图时的前景和背景色
支持图擦功能,选中图擦时,随着图擦的移动,根据图擦的大小,将图擦经过的区域中的形状相关部分清除
支持打印、打印预览功能,并保持图片所见即所得。支持将所画的内容保存为文件,格式为BMP格式
问题分析及方案设计
图形元素的分析设计
绘制的图形包括直线、连续线、矩形、椭圆、圆。如果每个图元都定义一个类,比较麻烦,重复性比较大,而且代码效率不高,所以选用自定义一个myfigure的基类,用来存储图元的公共信息,包括:线条宽度,线条颜色,画笔画刷颜色,画刷风格等。图元的各个子类在myfigure类的基础上派生。
直线的分析设计
在myfigure类的基础上派生CmyLine,存储直线的信息,包括画笔属性,起点,终点。线条颜色和线宽在画笔属性里设置。绘画的时候用Moveto()和Lineto()两个函数设定,在LButtonDown时确定起点,LButtonUp确定终点,在MouseMove中处理起点到终点的可视效果。
自由连线的分析设计
自由连线的处理和直线的处理类似,也在myfigure类的基础上派生一个CMyPolyLine类,用来存储自由线的信息,包括画笔属性,起点,终点线条颜色、类型和宽度在画笔属性里设置。五CmyLine所不同的是在绘制的时候,终点的改变不同,画自由线和直线的处理方式不同。在LButtonDown时候确定起点,在MouseMove中绘制自由线。
矩形的分析设计
在myfigure类的基础上派生一个CMYRect类,存储矩形的信息,画笔属性,画刷属性,矩形的左上角和右下角的点。笔宽和线条颜色、类型在画笔属性中设置,画刷的颜色和类型在画刷属性中设置。绘制用Rectangle()函数,LButtonDown时确定矩形左上角坐标,LButtonUp时确定矩形右下角坐标,在MouseMove中处理起点到终点的可视效果。
椭圆的分析设计
在myfigure类的基础上派生一
文档评论(0)