1、实验目的:
1)综合使用VC++编写Win32 应用的方法(单文档、多文档、对话框); 2 )掌握交互式绘图程序设计及MFC 相关类的使用; 3)掌握使用MFC 的编写简单动画程序。
2、实验任务:
1)使用MFC AppWizard 建立一个SDI 程序。综合前几次二维绘图
实验的结果,实现基本功能:
建立绘制点、直线段、圆、椭圆、圆弧、多段线(折线)、多边形、贝塞尔(Bezier )曲线的相关类(对于封闭图形,应能多种方式填充)、 字符串。使用实验二中自定义的CClientDC 的派生类,实现交互式(鼠标)绘制以上图形。实现颜色、线型、字体等的交互式选择,实现除曲 线、圆弧外其他图形的鼠标拾取 (框选、点选)。 实现新建文件、保存文件,打开文件(打开保存的自定义图形文件, 并绘制图形)。
软件界面设计 (工具栏、菜单、光标等)。 可选扩展功能:
(1)实现平移、旋转、缩放、对称、错切等图形几何变换 (2)图形的显示控制包括缩放(按比例、选取框)、平移(上、小、 左、右)。
(3)实现图层功能(可见性、颜色、锁定等)、图块功能(及选中
多个图形形成一组,图块的生成、引用、编辑)。
(4 )图形的显示控制包括实时缩放、实时平移和定点平移等。 (5)图形的编辑控制包括撤销、重复、剪切、复制、粘贴、删除、清除。
2 )本任务是在以上程序的基础上,增加动画功能(可单独增加相应 菜单):
交互式绘制三个圆作为太阳、地球、月球 (要求填充,注意位置。数据放入文档类,即文档类有变量太阳、地球、月球等),实现二维动画:月球绕地球转、地球自转(地球采用图案填充)、地球绕太阳公转(按时间比例,可设置参数:时间、颜色、调整大小)。
3、实验过程:
1)建立绘制点、直线段、圆、椭圆、圆弧、多段线(折线)、多边形、贝塞尔(Bezier )曲线的相关类
2)在菜单栏上增加相应的菜单,用来选择不同的功能 3)对增加的菜单栏设置ID,并且在View类中添加相应的事件响应函数,在各自的响应函数中实现各自的功能
4、实验结果:
基本功能:
扩展功能(做一个简单的太阳系):
在附加功能中,点击“开始”图形开始变换,点击“停止”图形静止。
5、实验体会:
通过这次实验,学习了交互式绘图程序设计,更深入认识了MFC 相关类的使用,完善了自己对MFC编程的认识体系,也熟悉了如何进行图形学中的交互式设计,此次实验综合了以前的许多知识,更为深入的认识了交互式绘图程序设计。对自己的提高也是非常大的。计算机图形学做了七个实验,做了实验之后收获很多,结合课堂上老师的讲解,对计算机图形学从许多方面都有了一定的理解。对更加深入学习计算机打下比较好的基础。