《计算机图形学》实验与课程设计

举报
资源描述
计算机图形学实验与课程设计张 素 智 编 著郑州轻工业学院计算机与通信工程学院2004年 12月 1 日目 录刖5实 验 1 Visual C+图形程序设计.4一、实验目的.4二、实验任务.4三、基础知识和实验步骤.43.1 Visual C+6.0应用程序开发方法.43.1.1 Visual C+的集成开发环境.43.1.2 应用程序工程的建立方法.53.1.3输入源程序进行程序设计.83.2图形设备接口和图形程序设计.103.2.1 图形设备接口简介.103.2.2 绘制基本图形.113.2.3 画笔与画刷.153.2.4 文本显示.193.3 鼠标编程.203.3.1鼠标消息处理.203.3.2 捕捉鼠标.213.3.3 鼠标编程综合小例.213.4 菜单程序设计.263.4.1菜单编辑器.273.4.2 菜单消息响应.293.4.3 综合示例.29四、实验总结.32实验二 基本图形(元)生成技术(一).33、实验目的.33二、实验任务.33三、基本知识和实验步骤.33任务一:实现DDA画线程序.33任务二、放 大 10倍后,算法演示程序.34任务三、加入鼠标功能,实现交互式画直线.36四、实验结果和分析.38五、实验总结.38实验三 基本图形(元)生成技术(二).39一、实验目的.39二、实验任务.39三、实验内容.39任务一:中点画圆法的扫描转换算法.39任务二:添加鼠标程序,实现交互式画圆.41任务三:编写中点画椭圆法的扫描转换程序.43任务四:添加鼠标程序,实现交互式画椭圆.45四、实验结果、分析和总结.46实验四 基本图形处理技术(一).47一、实验目的.47二、实验任务.47三、实验步骤.47四、实验结果、分析和总结.50实验五 基本图形处理技术(二).51一、实验目的.51二、实验任务.51三、实验步骤.51任务一:编码裁剪算法的程序设计.51任务二:用鼠标实现交互式裁剪效果.54四、实验结果和总结.57实验六 交互式技术和用户接口.58一、实验目的.58二、实验任务.58三、实验内容和实验步骤.58任务一:菜单程序设计.58任务二:AutoCAD交互式绘图简介.62四、实验总结.67实验七 曲线与曲面.68一、实验目的.68二、实验任务.68三、实验内容和实验步骤.68任务一:抛物线程序设计.68任务二:H erm ite曲线程序设计.69任务三:B ezier曲线的算法实现.70任务四:三次B样条曲线的算法实现.75实验八 二维儿何变换.77一、实验目的.77二、实验任务.77三、实验内容和实验步骤.77任务一:根据数学模型,编写几何变换程序.77任务二:利用鼠标实现交互式移动图形.80四、实验分析和总结.82实验1 Visual C+图形程序设计一、实验目的Visual C+是在Microsoft C 的基础上发展而来的,随着计算机软、硬件技术的快速发展,如今Visual C+已成为集编辑、编译、运行、调试于一体功能强大的集成编程环境。本章以Visual C+6.0为对象,主要介绍Visual C+集成编成环境的使用、图形设备接口和常用图形程序设计、鼠标编程以及菜单设计等基础,目的是通过对Visual C+的学习,掌握VisualC+图形程序设计的方法,为计算机图形学原理部分的算法实现提供程序工具和方法。二、实验任务1.学习Visual C+图形程序设计的方法;2.掌握Visual C+集成编成环境的使用、图形设备接口和常用图形程序设计、鼠标编程、橡皮筋交互技术、画刷与画笔以及菜单设计等;三、基础知识和实验步骤3.1 Visual C+6.0应用程序开发方法介绍Visual C+6.0集成开发环境,以一个简单的实例介绍利用Visual C+应用程序工程建立方法和程序设计框架。3.1.1 Visual C+的集成开发环境从开始菜单中启动Visual C+6.0,进入开发集成环境。打开一个项目后,可以看到VisualC+6.0的开发环境由标题栏、工具栏、工作区窗口、源代码编辑窗口、输出窗口和状态栏组成,见图3.1所示。标题栏用于显示应用程序名和所打开的文件名,标题栏的颜色可以表明对应窗口是否被激活。菜单栏包括文件、编辑、显示、插入、工程、编译、工具、窗口和帮助九项主菜单,包含了从源代码的编辑、界面设计、程序调试和编译运行在内的所有功能。工具栏列出了常用的菜单命令功能和对象方法。工具栏的下面是两个窗口,一个是工作区窗口,用于列出工程中的各种对象,一个是源代码编辑窗口,用于各个对象的程序设计。输出窗口显示项目建立过程中所产生的各种信息。屏幕底端是状态栏,它给出当前操作或所选择命令的提示信息。菜单栏工作区状态栏源代码.编辑窗标题栏图 3.1 Visual C+6.0集成开发环境3.1.2应用程序工程的建立方法Visual C+提供了 一 种称为App Wizard的工具,利用该工具,用户可以方便地按照自己的需要创建符合需要的应用程序框架。在这个基础上,用户可以进一步将自己编写的程序加入到这个框架中,实现用户程序的功能。下面介绍建立VcApp应用程序框架的方法,其它应用程序的方法都与此类似。第一步:启动Visual C+,选择工程方法从开始菜单中选择Visual C+,进入Visual C+集成环境。从文件菜单中选择新建(New)命令,弹 出 图 3-2 对话框。切 换 到 工 程(Projects)标签,项 目 类 型 选 择 MFCAppWizard(exe),输入工程的名字(如V cA pp),选择项目放置的位置,然后单击“确定”按钮。xs_cea:P平村;W l 4|的图 3-2 Visual C+的 New对话框第二步:设置应用程序的特性。这些设置包括六个问题,每 个问题都有不同的选项供选择。一个问题选择完后,通 过“下一 步 (N ext)选择下一个问题,直到六个问题选择完毕。还可以通过“上一步 (Back)返回上一个问题重新选择。下面继续上面的例子,在单击“确定”按钮后,弹出第一个问题窗口,如图3-3所示。第一个问题是建立什么类型的应用程序,有三个选项:单个文档(Single document),多重文档(Multiple document)和基本对话(Dialog based)。单个文档应用程序主窗口中只有一个窗口,多重文档可以在主窗口中开多个子窗口,基本对话主窗口是一个对话框。例中选择单个文档,单 击“确定”,进入下一个问题,如图3-4所示。第二个问题是数据库的支持,是否用ODBC存取数据库,有四个选项:不包括数据库的 支 持(None)、仅包含ODBC头 文 件(Header files only)、指定一个数据库但没有文件支持和指定一个数据库但需要文件支持。当选择了后两项,则需要用户选择一个已经建立的数据库。例中不需要数据库支持,选择第一个选项“否”,进入第三个问题,如图3-5所示。图 3-3 第一个问题:选择应用程序的类型图 3H 第二个问题:选择是否要用ODBC支持第三个问题是对ActiveX的支持。有五个选项:(1)没有对ActiveX的支持;(2)ActiveX容器,它可以包含链接和嵌入对象。容器不能为其它的ActiveX程序提供支持,它只能维护嵌入对象:(3)微型服务器(Mini-server),应用程序不能独立运行,只能被调用为其它程序建立ActiveX对象。(4)完整服务器(Full-server),它能够独立运行,并能够为其它应用程序建立ActiveX对象。(5)容器和服务器,一个应用程序可以同时是容器和服务器。在例子中,选择第一个选项,没有对ActiveX的支持,单 击“下一个(Next)进入下一个问题。图 3-5 第三个问题:选择是否对ActiveX的支持第四个问题是应用程序的特性和高级选项,如图3-6所示。图 3-6 应用程序的特性和高级选项例中全部采用默认选项,进入下一个问题。第五个问题是项目的风格、原文件注释和MFC库类型,如图3-7所示。在例子中全部采用默认选项,进入第六个问题。第六个问题是确定类名和文件名,如图3-8所示。基于第一个问题到第五个问题的回答,AppWizard会把将要建立的新类的名称通知用户。AppWizard将为应用程序建立四个新类,CVcAppApp是应用程序类,它 是 CWinApp的派生类。CMainFrame是 个 拥有应用程序主窗口的类。CVcAppDoc和 CVcAppView是该应用程序的文档和视图类。这些名字用户可以改变。最后单击“完 成 (Finish),显示所建项目的信息,单 击“确定”后,项目建立完成。图 3-7 项目的风格、原文件注释和MFC库类型图 3-8 通知MFC产生的类名称3.1.3输入源程序进行程序设计应用程序项目工程建立以后,就为应用程序的开发建立了一个框架,这是不输入任何程序代码,对该项目程序进行编译和运行,可以生成一个完整的窗U程序。用户根据项目工程中的不同类,输入自己设计的程序代码,完成用户的程序设计。例如,从 VcAppClasses中找至I CVcAppView的 OnDraw()函数,如图3-9所示。双击OnDraw()函数,这时系统会打开VcAppView.cpp文件,而且光标正置于OnDraw()函数中,在其中输入下列语句:pDc-TextOut(30,30,”同学们好,欢迎使用VC+编程!);编译并运行该程序,运行结果如图3-10所示。图 3-9 输入程序源代码图 3-1 0 运行结果3.2图形设备接口和图形程序设计3.2.1图形设备接口简介在 W indows系统中,程序都是通过一个叫做图形设备接口(GDI,Graphics DeviceInterface)的抽象接口和硬件打交道,Windows会自动将设备环境表映射到相应的物理设备,并且会提供正确的输入/输出指令。GDI是 Windows系统核心的三种动态链接库之一,它管理Windows系统的所有程序的图形输出。在 Windows系统中,G D I向程序员提供了高层次的绘图函数,只要掌握这些绘图函数,就可以很方便地进行图形程序设计。另-个概念是设备描述表(DC,Device Context),DC是一个数据结构,当程序向GDI设备中绘图时,需要访问该设备的DC。MFC将 GDI的 DC封装在C+类中,包括CDC类和 CDC派生类,这些类中的许多成员都是对本地GDI绘图函数进行简单封装而形成的内联函数。D C 的作用就是提供程序与物理设备或者虚拟设备之间的联系,除此之外,D C 还要处理绘图属性的设置,如文本的颜色等。程序员可以通过调用专门的GDI函数修改绘图属性,如 SetTextCok)r()函数。CDC类 是 GDI封装在M FC中最大的个类,它表示总的DC。表 3.1列出了 CDC中的一些常用绘图函数。表 3.1 CDC类中常用绘图函数函 数描 述使用频率Arc()椭圆弧*BitBlt()把位图从一个DC拷贝到另一个DC*Draw3dRect()绘制三维矩形*DrawDragRect()绘制用鼠标拖动的矩形*DrawEdge()绘制矩形的边缘*Drawlcon()绘制图标*Ellipse()绘制椭圆*FillRect()绘制用给定的画刷颜色填充矩形*FillRgn()绘制用给定的画刷颜色填充区域*FillSolidRed()绘制用给定的颜色填充矩形*FloodFill()用当前的画刷颜色填充区域*FrameRect()绘制矩形边界*FrameRgn()绘制区域边界*GetBKColor()获取背景颜色*GetCurrentB itmap()获取所选位图的指针*GetCurrentBrush()获取所选画刷的指针*GetCurrentFont()获取所选字体的指针*GetCurrentPalette()获取所选调色板的指针*GetCurrentPen()获取所选画笔的指针*GetCurrentPosition()获取画笔的当前位置*GetDeviceCaps()获取显示设备能力的信息*这些函数的语法和使用可以通过MS
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号