您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 计算机图形学实验指导书
1第一章计算机图形学的软件开发环境计算机图形学中的程序都是用C语言编写的,TurboC和VisualC++常见的两种C语言开发环境,TurboC是在Dos环境下开发,而VisualC++是在Windows环境下开发。1.1、在TurboC环境下开发应用程序一些高级语言都扩充了图形功能,这使得用户可以不需配备专门的图形软件,就能在计算机上进行图形工作。TurboC2.0包含有460多个库函数,其中有70多个图形函数,这些函数包括了绘图、处理图象及图素、屏幕及视图区控制、颜色及线型设置、状态查询和出错处理等,这使得TurboC具有很强的图形功能。1.图形显示器的工作方式IBMPC机的显示器可以在两种基本视频方式下工作:一种是文本方式;另一种是图形方式。(1)文本方式在文本方式下,屏幕上可以显示的最小单位是字符,字符在屏幕上以行、列排列,即我们通常见到的情况。文本方式不同,屏幕上所显示字符的行数和列数也不一样,颜色也会有所区别。TurboC支持6种不同的文本显示方式。(2)图形方式在图形方式下,屏幕上可以控制的最小单元称作像素(pixel),它是组成图形的基本元素,一般叫作“点”。通常把屏幕上所包含像素的个数叫做分辨率。分辨率越高,显示的图形越细致、质量越好,这是显而易见的。在图形方式下,屏幕上每个像素的显示位置用点坐标系来描述。在该坐标系中,屏幕左上角为坐标系的原点,坐标值为(0,0);水平方向为X轴,自左向右;垂直方向为Y轴,自上向下。见下图。点坐标系中坐标值的范围决定于所用显示器的分辨率。分辨率不同,水平方向上和垂直方向上的点数也不同,即其maxx、maxy的数值不同。就我们常用的VGA显示器来说,它通常所用的分辨率为6405480,即它的maxx值为639,maxy的值为479。2.图形函数及其用法TurboC的图形函数均在一个头文件“graphics.h”中定义。所以,凡是在程序中要调用这些图形函数,都必须在源程序的开头写上文件包含命令:#includegraphics.h(1)图形系统管理在一般默认情况下,显示器处于文本方式下。在文本方式下,所有的图形函数均不能应用。因此2在调用图形函数绘图之前,必须先将显示器设置为图形模式,这就是通常所说的图形方式初始化。在图形工作完毕之后,又要使显示器回到文本方式,以便进行程序文件等的编辑工作。图形方式初始化图形方式初始化通过函数initgraph来实现,它的功能是通过从磁盘上装入一个图形驱动程序来初始化图形系统,并将系统设置为图形模式。其调用格式为:initgraph(int*gdriver,int*gmode,char*path);调用该函数需用的三个参数含义为:gdriver:是一个整型值,用来指定装入的驱动程序名。gmode:是一个整型值,用来设置图形显示模式。path:是一个字符串,用来指明驱动程序所在的路径。举例:假设使用VGA显示器,图形显示模式为VGAHI,即高分辨率图形模式,分辨率为6405480。则初始化调用方式如下:intgdriver=VGA,gmode=VGAHI;initgraph(&gdriver,&gmode,“c:\\tc”);关闭图形模式在运行图形程序结束后,应及时关闭图形模式,回到文本方式,以进行其他工作。关闭图形模式用函数closegraph,其调用方法为:closegraph();(该函数不需参数)(2)绘图函数从理论上来说,用像素点几乎可以画出任何图形,但毕竟是效率太低。为此,TurboC的BGI提供了一些基本的绘图函数,以方便图形设计。所有绘图函数调用时的参数,其类型均为整型,因此填入参数表的参数,应为整数或整型变量putpixel函数:将指定的颜色写到由坐标x,y所确定的点。如putpixel(x,y,GREEN);line函数:在指定两点之间画直线。如:line(x1,y1,x2,y2);lineto函数:从当前点画线到指定点。如:lineto(x,y);moveto函数:把当前点移到指定点(不画线)。如:moveto(x,y)circle函数:指定圆心和半径画圆。如:circle(xc,yc,r);arc函数:画一段圆弧。要求指定圆弧所在圆的圆心、半径,以及圆弧的起始角和终止角。如:arc(xc,yc,angs,ange,r);rectangle函数:指定矩形的两对角点画一个矩形。如:rectangle(x1,y1,x2,y2);drawpoly函数:画一条任意多边折线。如:drawpoly(nps,xy);其中,nps为多边折线的顶点数;xy为存放顶点坐标值的数组名。如果首尾两点重合,则可以绘制一个任意多边形。(3)图形属性控制图形的属性指颜色和线型,颜色又有背景色和前景色之分。背景色指的是屏幕的颜色,即底色;前景色指的是绘图用的颜色。任何绘图函数都是在当前颜色(背景色和前景色)和线型的状态下作图的。系统的默认值为:背景色为黑色;前景色为白色;线型为实线。•setbkcolor函数:设置背景颜色。如:setbkcolor(COLORNAME);setcolor函数:设置前景颜色。(用法同上)setlinestyle函数:设置线型。如:setlinestyle(LSTY,0,WIDTH);(4)绘图程序简例#includegraphics.hmain(){/*DETECT的含义是自动检测当前显示器的类型,且选用最大可能的分辨率模式*/3intgd=DETECT,gm;initgraph(&gd,&gm,“f:\\tc”);setbkcolor(LIGHTBLUE);setcolor(RED);circle(320,240,100);/*getch()的含义是读入一个字符,但不回显在窗口中,加入这句语句的目的是防止显示的图像很快消失*/getch();closegraph();}1.2、在VisualC++环境下开发应用程序一.Windows编程基础VisualC++是可视化开发系统,一般而言,可视化开发系统集成了一系列系统可用资源和开发工具:程序调试工具包括源程序语法检查、可执行程序修改和运行监视等;可选择并构成具体语句或源程序结构的例程库及Help;资源管理器包括图形化窗口及组成元素的多种对象的编辑器;应用程序Help和Setup开发工具包,源程序编辑器和编译器;系统函数库和系统函数开发工具。在Windows的程序设计语言中,VC、VB、VJ都是“面向对象”的程序设计语言。对象是Windows的规范部件:窗口、菜单、按钮、对话框、程序模块都是对象。编写Windows程序相当一部分工作是在创建对象和为对象属性赋值。对象具有规范形态和操作模式的特征。在用vc进行编程时有两种方法:传统的编程方法方法和交互式编程方法。传统的编程方法是采用直接调用API的方法进行编程,API是Win系统与Win应用程序间的标准程序接口,API为应用程序提供Windows系统特殊函数及数据结构,并且Win应用程序可以利用标准大量API函数调用系统功能。API函数的功能包括:窗口管理函数实现窗口的创建、移动和修改功能;系统服务函数:实现与操作系统有关的多种功能;图形设备(GDI)函数:实现与设备无关的图形操作功能。交互式编程方法是采用MFC的方法进行编程。采用交互式方法时,可视化开发平台给出了许多选用的对象,程序员可选择所需对象并确定其属性,由此搭建起应用程序的“大框架”,并可根据需要进一步编写必要的细节代码段,最后构成完整的应用程序。利用WindowsAPI函数编写Windows应用程序必须首先了解以下内容:(1)窗口的概念(2)事件驱动的概念(3)句柄(4)消息(1)窗口一个应用程序的窗口一般包含下列成分:4编写一个Windows应用程序首先应创建一个或多个窗口,随后应用程序的运行过程即是窗口内部、窗口与窗口之间、窗口与系统之间进行数据处理与数据交换的过程。(2)事件驱动Windows程序设计是针对事件或消息的处理进行,消息是指描述事件发生的信息(如按下鼠标或键盘)。Windows程序的执行顺序取决于事件发生的顺序,程序的执行顺序是由顺序产生的消息驱动的,但是消息的产生往往并不要求有次序之分。事件驱动编程方法对于编写交互式程序很有用处,它避免了死板的操作模式。(3)句柄句柄是一个4字节长的数值,用于标识应用程序中不同的对象和同类对象中不同的实例,应用程序通过句柄访问相应的对象信息。以下是常用句柄类型及其说明:HWND窗口句柄HDC设备环境句柄HBITMAP位图句柄HCURSOR光标句柄HICON图标句柄HFONT字体句柄HMENU菜单句柄HPEN画笔句柄HFILE文件句柄HBRUSH画刷句柄HINSTANCE当前实例句柄(4)消息Windows应用程序利用Windows消息(Message)与应用程序及系统进行信息交换。消息由三部分组成,①消息号:由事先定义好的消息名标识;②字参数(wParam):用于提供消息的附加信息;③长字参数(lParam):用于提供消息的附加信息,附加信息与具体消息号的值有关在Win中消息用结构体MSG表示:typedefstructtagMSG{HWNDhwnd;窗口句柄,为null,则可检索所有驻留在消息队列中的消息UINTmessage;消息值,由Windows.h头文件中的宏定义来标识WPARAMwParam;包含有关消息的附加信息,不同消息其值有所不同LPARAMlParam;DWORDtime;指定消息送至队列的时间POINTpt;指定消息发送时屏幕光标的位置,其数据类型POINT也是一个结构体}MSG;typedefstructtagPOINT{LONGx;LONGy;}POINT;VC中存在几种系统定义的消息分类,不同的前缀符号经常用于消息宏识别消息附属的分类,系统定义的消息宏前缀如下:BM表示按钮控制消息CB表示组合框控制消息DM表示默认下压式按钮控制消息EM表示编辑控制消息LB表示列表框控制消息SBM表示滚动条控制消息WM表示窗口消息Windows编程常用消息包括:窗口管理消息,初始化消息,输入消息,系统消息,剪贴板消息,控5制处理消息,控制通知消息,滚动条通知消息,非用户区消息,MDI消息,DDE消息,应用程序自定义的消息。二、Windows应用程序常用消息1.WM_LBUTTONDOWN:产生单击鼠标左键的消息。1Param:低字节包含当前光标的X坐标值高字节包含当前光标的Y坐标值;wParam包含一整数值以标识鼠标键的按下状态;MK_LBUTTON按下鼠标左键,MK_MBUTTON按下鼠标中键,MK_RBUTTON按下鼠标右键.此外,相似的消息还有::放开鼠标左键时产生;:单击鼠标右键时产生;:放开鼠标右键时产生;:双击鼠标左键时产生;:双击鼠标右键时产生2.WM_KEYDOWN:按下一个非系统键时产生的消息。系统键是指实现系统操作的组合键,例如Alt与某个功能键的组合以实现系统菜单操作等。wParam:按下键的虚拟键码,用以标识按下或释放的键(如F1的虚拟键码在Windows.h文件中定义为VK_F1);1Param:记录了按键的重复次数、扫描码、转移代码、先前键的状态等信息。相似的消息还有WM_KEYUP,在放开非系统键时产生3.WM_CHAR:按下一个非系统键时产生的消息。WParam:为按键的ASCII码;1Param:与WM_KEYDOWN的相同。4.WM_CREATE:由CreateWindow函数发出的消息。wParam:未用;1Param:包含一个指向CREATESTRUCT数据结构的指针。5.WM_CLOSE:关闭窗口时产生的消息。wParam和1Param均未用。6.WM_DESTROY:由DestroyWiodow函数发出的消息。wParam和1Param均未用。7.WM_QUIT:由PostQuitMessage函数发出的消息,退出应用程序时发出的消息。wParam:含退出代码,标识程序退出运行时的有关信息;1Param:未用8.WM_PAINT:以下
本文标题:计算机图形学实验指导书
链接地址:https://www.777doc.com/doc-2098372 .html