1、第,2,章,计算机图形系统,目 录,2.1,计算机图形系统概述,2.2,图形输入设备,2.3,图形绘制设备,2.4,图形显示系统,2.5,图形软件标准,2.6 Visual C+,的图形程序开发方法,2.7 OpenGL,程序设计基础,2.1,计算机图形系统概述,2.1.1,计算机图形系统的结构,2.1.2,计算机图形系统的基本功能,2.1.1,计算机图形系统的结构,计算机图形系统,图形软件系统,图形硬件系统,图形应用软件,图形支撑软件,图形计算机平台,图形设备,2.1.2,计算机图形系统的基本功能,1,、,处理功能:,包含形体设计、分析,图形描述,基本几何元素(点、线、面等)的表示、求交运算
2、分类、几何变换,光、色模型的建立和计算,干涉检测等。,2,、,存储功能:,存储图形数据,包括图形几何数据、拓扑关系及属性信息等。,3,、,交互功能:,通过图形显示器和图形输入设备实现用户与图形系统的人机通信。用户通过显示屏幕观察设计的图形,利用交互输入设备对图形进行在线的操作(增加、删除、修改等)以得到满意的设计结果。,4,、,输入功能:,将图形的形状、尺寸等有关的图形数据和操作命令输入到计算机中去。,5,、,输出功能:,把所设计的图形从计算机中输出出来,包括显示输出和硬拷贝输出两种形式。,2.2,图形输入设备,作用:,图形输入设备用于输入图形数据或图形操作命令,分类:,一般应用输入设备类:
3、鼠标、键盘、光笔等,特殊用途的图形输入设备:数据手套、触摸板、图像扫描仪等,2.2.1,一般应用图形输入设备,控制光标移动用来输入定位坐标或选择操作的输入设备,它将移动距离及方向的信息变成数字脉冲信息送给计算机,由计算机转换成光标的坐标数据,从而达到定位目的。,根据位移测量方法不同将其,分为,:机电式、光机式和光电式三种,。,最基本的输入设备,具有,ASCII,编码键、命令控制键和功能键,能用来输入图形坐标、选择菜单、选择图形功能等。,1,、键,盘,2,、鼠,标,光笔是一种检测装置,是,“,能检测出光的笔,”,。它靠检测荧光屏上的发光点来选择屏幕的位置坐标。,3,、光笔,(,Ligt Pen,
4、光笔的基本功能,:定位、拾取和笔划跟踪。拾取是选中显示器上已显示的图形或文字。笔划跟踪是用光笔拖动光标实现定位,游戏杆:,是有一根手柄的可摇动装置。手柄通过一个球形轴承半固定在底座上,在手柄运动时带动一对电位器或电脉冲产生器产生信号,控制屏幕上的光标的运动。,跟踪球:,跟踪球是一个球,可用手掌或掌心旋转使屏幕光标移动。附加的电位计量器用来测量球的旋转量和方向。,4,、游戏杆,(,Joy Stick,),和跟踪球,触摸屏,是允许用手指触摸的方式选择显示屏幕位置的显示器。,根据触点记录方式将触摸屏,分为,光学的、电子的和声学。,5,、触摸屏(,Touch Screen,),2.2.2,特殊应用
5、图形输入设备,特殊应用图形输入设备是指那些用于专门目的的图形输入专门设备。,这里仅介绍,数字化仪、图象扫描仪、数码相机和数据手套。,又称绘图板,是用来给物体作画、着色或交互选择坐标位置的常用设备。这些设备可输入两维或三维空间的坐标。通常,数字化仪在所绘制的图或对象上扫描,并输入一组随机的坐标位置,相互之间以直线段连接,以逼近曲线或表面形状。标准的数字化仪有,两个主要部分,:()坚固的、内部布满金属栅格的图板;()提供位置信息的定位器。,1,、数字化仪(,Digitizer,),扫描仪是,一种图像输入设备,是直接把图形(工程图纸)和图像(照片、广告等)扫描输入到计算机中并以图像形式存储表示的设备
6、按扫描仪所支持的颜色可分为单色扫描仪和彩色扫描仪;按其所采用的固态器件又可分为电荷耦合器件(,CCD,)扫描仪、,MOS,电路扫描仪和紧贴型扫描仪;按扫描宽度和操作方式可以分为大型扫描仪、台式扫描仪和手持式扫描仪。,扫描仪的,两个重要指标,是分辨率和支持的颜色数或灰度等级,如分辨率为,1200dpi,(,dots per inch,),颜色为,32,位真彩色。现在大多扫描仪都提供分辨率和颜色、灰度的选择功能。,2,、图象扫描仪(,ImageScanner,),数码相机是专门用来获取数字化图像的照相机。虽然它从外观上看很像一架普通的光学照相机,但内部结构却大不相同。数码相机利用电耦合器件成像
7、图像存储在半导体器件上。数码相机作为计算机的输入设备,将存储在半导体器件上的图像输入到计算机中,并利用相应的软件进行编辑处理,可用彩色打印机打印输出。,另外数据手套也是一种特殊的图形输入设备,主要用于对虚拟场景中的对象定位,它与头盔联合使用,可直接操纵与观察三维虚拟场景中的对象。,3,、数码相机,(,Digital Camera,),2.3,图形绘制设备,图形输出包括图形显示和图形绘制。图形绘制通常指把图形画在纸上,也称硬拷贝。绘图仪和打印机是两种最常用的硬拷贝设备。,2.3.1,绘图仪,绘图仪分,笔式绘图仪,和,喷墨式绘图仪,两种。喷墨式绘图仪的工作原理是利用电脉冲控制喷墨头,由喷墨头上的
8、喷嘴把墨滴喷到图纸上而形成图形。笔式绘图仪又分为滚筒式绘图仪和平板式绘图仪两种。,滚筒式绘图仪是把有孔的绘图纸卷在有突针的滚筒上,机架静止,笔在托架上运动,绘图纸在滚轮上沿托架前后移动,从而绘制出图形。绘图纸和绘图工具笔的运动是由两只步进电机带动,通过控制两只步进电机进行绘图。绘图工具可以是笔,也可以是彩色喷墨头。滚筒式绘图仪一般结构较简单、价格较低,但精度和速度不高。,平板式绘图仪有一块绘图平板,图纸平铺在绘图平板上,横梁和笔架运动。这种绘图仪精度高、速度快、但价格也较高。绘图笔的运动有六种基本动作:、四个方向上的移动和抬笔、落笔。因此,任何绘图路线都只能由这四个方向的基本运动组成。,2.3
9、2,打印机,打印机可用来输出文本、数据和图形。目前常用的打印机主要有针式打印机、喷墨打印机和激光打印机。,1,、针式打印机,针式打印机的打印机头上装有一组打印钢针,在打印机和打印头之间装有色带,通过选择打出的某些钢针撞击色带和纸将点阵图案印在纸上。打印时打印头从左至右移动来打印一行,当打完一行后打印纸以一定的行距向前移动,以便打印下一行。这种打印机因机器本身和耗材的价格便宜而被普遍使用,但作为图形输出设备时因其输出精度太低致使图形质量很差。,2,、喷墨打印机,喷墨打印机的,基本原理,是通过喷墨头在打印纸上横向移动时将小墨点喷射到打印纸上来形成图案的。墨水泵将黄、品红、青,3,种颜色的墨水分别
10、注入,3,支很细的喷笔中,在高压下,墨水通过喷笔内细而长的玻璃毛细管喷到纸上。,喷墨打印机因其价格较激光打印机便宜,使用彩色墨盒的彩喷可打印彩色图形,所以是较理想的图形打印设备,但速度较慢且耗财昂贵。,3,、激光打印机,激光打印机的基本原理:用激光束在光敏鼓上扫描,通过控制激光束的开关来控制光敏鼓是否吸附碳粉。当光敏鼓在纸上滚动时,便能在纸上输出图形等信息。,激光打印机有效地利用了激光的定向性、单色性和能量密集性,结合电子扫描技术的高灵敏度和快速存取等特性,使输出图形图像的质量非常高,是理想的图形输出设备。激光打印机正朝着高速度、高精度、低噪音、彩色化的方向发展。,2.4,图形显示系统,图形显
11、示指的是在显示器屏幕上输出图形,显示器通过显示卡接到系统总线上,显示器和显示卡共同构成了显示系统。,2.4.1,显示器,显示器是显示图形的设备。根据显示器外形可将其分为两种类型:阴极射线管式(,CRT,)显示器和平板显示器(液晶显示器、等离子显示器、激光显示器等)。在应用中,以前是以,CRT,显示器为主;目前,由于液晶显示器价格的大幅降低,使用日渐增多,大有取代,CRT,显示器的趋势。,1,、阴极射线管(,CRT,),阴极射线管(,CRT,,,Cathode Ray Tube,)是,CRT,显示器的主要组成部分。根据阴极射线管的可显示颜色数可分为单色阴极射线管和彩色阴极射线管两种。,(,1,)
12、单色阴极射线管,CRT,是一种真空器件,利用电磁场产生高速的、经过聚焦的电子束,偏转到屏幕的不同位置轰击屏幕表面的荧光材料而产生可见图形。,阴极射线管的各组成部分及其功能:,电灯丝:,通电后变热以给阴极加热。,阴极:,由灯丝加热后释放自由电子,在其周围形成电子云。,控制栅:,加上负电压后,能够控制通过其中小孔的带负电的电子束的强弱。通过调节负电压高低来控制电子数量,来控制荧光屏上相应点的亮度。,聚焦系统:,保证电子束在轰击屏幕时,汇聚成很细的点。,加速电极:,对电子束加速,用于产生高速电子束。,偏转系统:,控制电子束的偏转路径,以轰击屏幕的特定位置。,屏幕:,内壁涂有荧光粉,常称作荧光屏,是,
13、CRT,显示图形的表面。,(,2,)彩色阴极射线管,如果显示屏上只涂一种荧光粉,则只能发出一种光色,这种显示器称作单色显示器,色彩单调。彩色显示器利用能发出不同光色的荧光粉的光色组合来显示彩色图形。最常用的,CRT,彩色显示器采用的是荫罩式彩色显像管。,根据影孔板孔的形状可将影孔板分为三类:,点状影孔板:,大多数球面与柱面显像管采用此类影孔板。由于太多电子无法穿过荫罩孔而直接打在荫罩上,导致长时间工作后,荫罩容易出现过热导致变形,影响屏幕的局部色纯。但其抗震性好。,栅格式影孔板:,这种并行排列的方式容易对齐,调出的颜色也较鲜艳,常用于高分辨率的彩色,CRT,显示器。如,,Sony,的,Trin
14、itron,与,Mitsubishi,的,Diamondtron,显像管采用此类影孔板。,沟槽式影孔板:,长形板孔在保证荫罩强度的前提下,提高了电子透过率。,LG,的,Flatron,显像管采用此类影孔板。,(,a,)点状影孔板 (,b,)栅格式影孔板 (,c,)沟槽式影孔板,2,、,CRT,图形显示器,按其扫描方式,,CRT,显示器可分为,随机扫描显示器,(又称矢量显示器)、,直视存储管图形显示器,和,光栅扫描式显示器,三种。它们的原理不同,可显示的图形种类不同,因此用途也不同。,(,1,)随机扫描的图形显示器,随机扫描图形显示器,,又称向量(,vector,)显示器、笔划(,Stroke
15、writing,)显示器,是画线设备,其特点是电子束可随意移动,只扫描荧屏上要显示的部分。,优点:,扫描速度快,分辨率高,线条质量好,易修改,交互性好,动态性能好。,缺点:,价格贵;只能显示线框图形,并不能显示逼真的有阴影场景。,应用领域:,主要应用于军事、,CAD,领域。,(,2,)直视存储管图形显示器,直视存储管,DVST,(,direct-view storage tube,)通过紧贴在屏幕荧光层后的电荷分布(存储栅)来存储图形信息。从表面上看直视存储管的特性极象一个有长余辉的荧光屏,一条线一旦画在屏幕上,在一小时之内都将是可见的。,DVST,的特点,有:无需刷新,很复杂的图形也可以在极
16、高的分辨率下无闪烁地显示,成本较低;不能显示彩色,不能局部修改,擦除和重画过程对复杂图形来讲可能需要几秒钟。,(,3),光栅扫描式显示器,目前使用最广泛的,CRT,显示器是基于电视技术的光栅扫描式显示器。在光栅扫描系统中,电子束横向扫描屏幕,一次一行,从顶到底顺次进行。当电子束横向沿一行移动时,电子束的强度不断变化来建立亮点的图案。,关于光栅扫描的几个概念如下:,帧:,电子束从左到右、自等至底扫描一遍,对应于一帧。,水平回扫:,每条扫描线末端,电子束返回到屏幕的左端,称为电子束的水平回扫。回扫时关闭电子枪。,垂直回扫:,在每帧的终了,电子束返回到屏幕的左上角,称为电子束的垂直回扫。回扫时关闭电
17、子枪。,行频、帧频:,水平扫描频率为行频,垂直扫描频率为帧频。,扫描方式:,有逐行扫描和隔行扫描。,逐行扫描,是从屏幕顶端开始,逐行下扫,直到屏幕底部。,隔行扫描,是先扫偶数行扫描线,再扫奇数行扫描线。隔行扫描技术主要用于刷新速率较慢的显示器中,以避免闪烁。,刷新速率:,以多少周期,/,秒或赫兹,/,秒为单位来描述。一个周期对应一帧。如每秒,60,帧的刷新速率为,60Hz/s,。采用一定速率的刷新来保持屏幕显示的图形稳定。,3,、液晶显示器,LCD,(,Liquid Crystal Display,),由于,CRT,显示器体积大、重量重、耗电量高、产生辐射与电磁波干扰等缺点,而液晶显示器能克服
18、这些不足,应用日益广泛,前景十分广阔。,液晶显示器是基于液晶电光效应的显示器件。液晶是一种介于液体和固体之间的具有规则性分子排列的有机化合物,分子形状为细长棒形,长宽约,1nm,10nm,。在不同电流电场作用下,液晶分子会做规则旋转,90,度排列,产生透光度的差别,如此在电源,ON/OFF,下产生明暗的区别。依此原理控制每个像素,便可构成所需图像。,液晶显示器由六层薄板组成:第一层是垂直偏光板,第二层是镀在石英平面上的垂直网格线板,第三层是液晶层,第四层是水平网格线板,第五层是水平偏光板,第六层是反射层。,在不加电场的情况下,入射光经过偏光板后通过液晶层,偏光被分子扭转排列的液晶层旋转,90,
19、度。在离开液晶层时,其偏光方向恰与另一偏光板的方向一致,所以光线能顺利通过,使电极面呈光亮。,当加入电场的情况时,每个液晶分子的光轴转向与电场方向一致。液晶层也因此失去了旋光的能力,结果来自入射偏光板的偏光,其方向与另一偏光板的偏光方向成垂直的关系,并无法通过,这样电极面就呈现黑暗的状态。,液晶层中的水晶液滴都被包含在细小的单元格结构中,一个或多个单元格构成屏幕上的一个像素。显示图像时,通过对显示信号的,AD,转换,计算出各像素的通断状态后,直接把信号驱动具体像素,控制该液晶像素对光线的,通断,,就可以在屏幕上生成图像。,反射层 水平偏光板 水平网格线 液晶层 垂直网格线 垂直偏光板,图,2.
20、18,液晶显示器的六层结构,液晶显示器具有如下,优点,:体积小,重量轻;功耗低(数十,uW/cm,以下),散热小;精确还原画面,文字锐利;画面不闪烁;幅射小;屏幕调节简单方便。,目前,,LCD,显示器图像质量还不够完善,色彩表现和饱和度不及,CRT,显示器,而且响应时间也比,CRT,显示器长,当画面更新速度快而剧烈时,画面延迟会产生重影、脱尾等现象。,2.4.2,显示卡,显示卡将显示器连接到系统总线上,并与显示器共同构成计算机的显示系统,实现将信息从显示器显示输出。,显示子系统结构,常用的光栅图形显示子系统的结构:帧缓存由显示控制器直接访问,显示图形时所需的扫描转换工作由,CPU,完成,加重了
21、CPU,的负担。高级光栅图形显示子系统,增加了显示处理器又称显示协处理器,把,CPU,从图形显示处理的事务中解脱出来。其主要任务是扫描转换待显示的图形,甚至一些基本图形操作,还有与鼠标等交互输入设备的接口。,图,2.19,常用的光栅扫描显示系统结构,2,、显示卡的功能,在,PC,机组成的计算机图形系统中,将显示控制器和帧缓存等做在一个板卡上,称为图形适配卡或图形显示卡。它直接插在主机板的扩展槽上,显示器通过它与计算机相连。,图,2.20,显卡,3,、相关概念,(,1,)分辨率,(,2,)象素与帧缓存,(,3,)颜色查找表,(,4,)屏幕坐标系,(,1,)分辨率(,Resolution,),光
22、点,是指电子束打在显示器的荧光屏上能够显示的最小发光点,一般用直径来表明光点的大小。在当前的图形显示模式下,屏幕上可以控制的可显示的最小单元,被称作,像素点,(pixel),,它是组成图形的基本元素。,图形显示系统中的三种分辨率概念:,屏幕分辨率,,,也称为光栅分辨率或物理分辨率,是指,CRT,显示器显示系统能够显示的最大光点数,通常用水平方向上的光点数与垂直方向上的光点数的乘积来表示。,显示分辨率:,是显示控制器所能提供的显示模式分辨率。显示系统的显示模式分为。对于文本显示方式,显示分辨率用水平和垂直方向上所能显示的字符总数的乘积表示。文本模式和图形模式对于图形显示方式,显示分辨率是指屏幕上
23、所包含像素的个数,通常用水平和垂直方向上所能显示的象素点总数的乘积表示。,存储分辨率:,是指帧缓冲区的大小,一般用缓冲区的字节数表示。存储分辨率不仅与显示分辨率有关,还与象素点的色彩有关。帧缓存的容量等于显示分辨率乘上每个像素对应的字节数。,三种分辨率的概念既,有区别又有联系,,对图形的显示都会产生一定的影响。屏幕分辨率决定了所能显示的最高分辨率;显示分辨率和存储分辨率对所能显示的图形也有控制作用。,(,2,)象素与帧缓存,屏幕上一个象素点具有颜色、灰度等属性,它们存储在帧缓存中,所以,象素点对应帧缓存中的一组信息,其对应技术有组合象素法(,Packed Pixel Method,)和颜色位面
24、法(,Color Plane Method,)。,帧缓冲存储器,CRT,光栅,电子枪,寄存器,1,DAC,图,2.21,具有,24,位面彩色帧缓存的显示器,(,3,)颜色查找表,(,4,)屏幕坐标系,屏幕是显示图形的场所,为了进行定位,在屏幕上定义了一个屏幕坐标系。它给出了第一象限的一个平面区域,0 xXmax,,,0yYmax,(分辨率为(,Xmax+1,)*(,Ymax+1,)。坐标值是正整数,一对(,X,,,Y,)坐标对应一个像素点。注意有些显示器的屏幕坐标系的,Y,轴方向向上而有的向下。,图,2.23,两种屏幕坐标系,2.5,图形软件标准,图形标准是指系统中各界面之间进行数据交换的接口
25、标准、语言连接规范和应用程序接口,API,标准等。图形标准的制定是为了在不同的计算机系统和图形设备之间进行图形应用软件的移植。,随着计算机图形学应用领域的不断扩大,各种图形软件日益增多,图形输入输出设备也是种类繁多。如果没有一些软件标准,对应用软件的开发和移植等工作将造成困难。,20,世纪,50,年代到,70,年代初,人们要求图形软件想着通用、高级、与设备无关的方向发展,导致了计算机图形标准的出现。,图形标准的研究和制定于,20,世纪,70,年代初开始,在,80,年代进入了大发展时期。,1985,年,第一个国际计算机图形信息标准及计算机图形核心系统(,GKS,)正式颁布。之后,三维图形核心系统
26、GKS-3D,)、程序员层次交互式图形系统(,PHIGS,)、计算机图形原文件(,CGM,)、计算机图形接口(,CGI,)、初始图形交换规范(,IGES,)以及产品数据交换标准(,STEP,)等相继制订并颁布。除了由官方标准化组织发布的图形标准外,还有一些被工业界使用的已经成为事实上的标准,比较著名的有,SGI,等公司的,OpenGL,,微软公司的,DirectX,等。计算机图形标准的研究和发展,进一步推动了计算机图形学及其应用技术的发展。,本节将介绍,GKS,标准、,CGM,标准、,CGI,标准、,IGES,标准、,DXF,标准、,STEP,标准、,OpenGL,标准。,1,、,GKS,
27、标准,图形核心系统,GKS,(,Graphical Kernel System,)是由德国工业标准化组织协会提出的并被许多国家采纳、引用的第一个图形软件国际标准。它是一个子程序软件包,提供了各种物理的图形输入输出设备和应用软件之间的接口。用户通过应用程序调用,GKS,的功能子程序便可方便的进行图形的输入、输出、变换、组合、装配等交互设计操作。,GKS,独立与设备和高级语言。它免除了绘图设计和显示指令的繁琐工作,也不需要详细了解各种图形的输入输出设备的控制功能,减轻了设计人员的许多重复性工作。由于,GKS,使应用软件只与抽象的逻辑设备打交道,略去了物理设备的个性,为应用软件的移植提供了极大的方便
28、从而使开发的软件具有了设备无关性。为便于应用,,GKS,提供了与各种流行高级语言的接口,并作为独立于高级语言的通用软件为开发各种应用图形软件服务。,GKS,是针对二维图形应用的,为满足三维图形应用的需求,在此基础上又制定了,GKS-3D,。,GKS-3D,具有三维图素、填充区域图素集、具有视图操作的三维变换、三维输入、消隐处理、边界属性和三维几何属性等功能。,GKS-3D,是一个完全的三维图形系统,并与,GKS,(,2D,)兼容。,GKS,的应用领域十分广泛,包括科学技术和商业图形的生成、支持地图学、过程控制和,CAX,等领域的应用。,2,、,CGM,标准,计算机图形元文件,CGM(Comp
29、uter Graphic Metafile),规定了生成与设备无关的图形定义、存取和传递图形数据的格式。它提供了把不同图形系统所产生的图形集成到一起的一种手段,适用于各种设备和应用程序。,CGM,标准是由一套标准的与设备无关的定义图形的语法和词法元素组成。它分为两部分,第一部分是功能描述,包括元素标志符、语义的说明及参数描述,以抽象的词法描述了相应的文件格式;第二部分描述了,3,种标准元文件编码形式,即字符、二进制数和正文编码。,CGM,标准元文件本身并不提供元文件生成和解释的具体方法,而利用上述三种不同的标准数据编码形式来实现元文件的元素功能。,3,、,CGI,标准,计算机图形接口,CGI,
30、Computer Graphics Interface,)是,ISO TC97,组提出的图形设备标准。,CGI,是第一个针对图形设备接口,而不是应用程序接口的交互式计算机图形标准。,CGI,的目标是使应用程序和图形库直接与各种不同的图形设备相作用,使其在各种图形设备上不经修改就可以运行,即在用户程序和虚拟设备之间以一种独立于设备的方式提供图形信息的描述和通信。,CGI,规定了发送图形数据到设备的输出和控制功能,从图形设备接收图形数据的输入、查询和控制功能,因,CGI,是设备级接口,对出错处理和调试只提供了最小支持。,CGI,提供的功能集包括控制功能集、独立于设备的图形对象输出功能集、图段功
31、能集、输入和应答功能集以及产生、修改、检索和显示以象素数据形式存储的光栅功能集。在二维图形设备中可以找到,CGI,支持的功能,但没有一个图形设备包含由,CGI,定义的所有功能,从这个意义上说,,CGI,定义了与虚拟设备的接口。,4,、,IGES,标准,基本图形交换规范,IGES,(,Initial Graphics Exchange Specification,)是,CAD/CAM,应用最广泛的数据交换标准。它于,1980,年由美国国家标准局(,NBS,)主持成立由波音公司和通用电气公司参加的技术委员会制订,并于,1981,年正式成为美国的国家标准。它适用于,CAD/CAM,系统间或同一,CA
32、D/CAM,系统内部不同模块间的图形信息交换。,IGES,文件由五或六个段组成:标志(,flag),段、开始(,start,)段、全局(,global,)段、元素索引(,directory entry,)段、参数数据(,paramter data,)段、结束(,terminate,)段组成。其中,标志段仅出现在二进制或压缩的,ASCII,文件格式中。在,IGES,文件中表示信息的基本单位是元素,,IGES,定义了五类元素:曲线和曲面几何元素、构造实体几何,CSG,元素、边界,B-Rep,实体元素、标注元素和结构元素。,各商用,CAD,系统几乎都提供了,IGES,文件前、后置处理程序,实现将传送
33、来的数据格式转换为,IGES,文件格式,把,IGES,文件格式转换为,CAD,系统内部的数据格式。,5,、,DXF,标准,数据交换格式,DXF,(,Drawing Exchange File,)是,Autodesk,公司首先用于描述,AutoCAD,图形的文件。每个,CAD,系统都有自己的数据文件,数据文件分图形数据文件、几何模型文件和产品模型文件几种。数据文件的格式与每个,CAD,系统自己的内部数据模式密切相关,而每个,CAD,系统自己内部的数据模式一般是不公开的,也是各不相同的。由于用户使用的需要,就有数据交换文件概念的出现。,一个完整的,DXF,文件是由四个段和一个文件结尾组成的。其顺序
34、如下:,(,1,)标题段,记录,AutoCAD,系统的所有标题变量的当前值或当前状态。这些标题变量记录了,AutoCAD,系统的当前工作环境。例如,,AutoCAD,版本号、插入基点、绘图界限、,SNAP,捕捉的当前状态、栅格间距、式样、当前图层名、当前线型和当前颜色等;,(,2,)表段,包含了四个表,每个表又包含可变数目的表项。按照这些表在文件中出现的顺序,它们依次为线型表、图层表、字样表和视图表;,(,3,)块段,记录定义每一块时的块名、当前图层名、块的种类、块的插入基点及组成该块的所有成员。块的种类分为图形块、带有属性的块和无名块三种。无名块包括用,HATCH,命令生成的剖面线和用,DI
35、M,命令完成的尺寸标注;,(,4,)元素段,记录了每个几何元素的名称、所在图层的名称、线型名、颜色号、基面高度、厚度以及有关几何数据;,(,5,)文件结束,标识文件结束。,DXF,为,AutoCAD,系统的图形数据文件,是具有专门格式的,ASCII,码文本文件。,AutoCAD,可以用,DXFFOUT,命令生成它,也或以用,DXFIN,命令读入它,许多,CAD,系统具有输入和输出该文件的功能。,DXF,虽然不是标准,但已成为事实上的数据交换标准。,6,、产品数据表达与交换标准,STEP,产品数据表达与交换标准,STEP,(,Standard for The Exchange of Produc
36、t model data,)是为了克服,IGES,存在的文件太长及有些数据不能表达等问题而开发的,是一个关于产品数据计算机可理解的表示和交换的国际标准,目的是提供一种不依赖于具体系统的中性机制,能够描述产品整个生命周期中的产品数据。产品生命周期包括产品的设计、制造、使用、维护、报废等。产品在各过程产生的信息既多又复杂,而且分散在不同的部门和地方。这就要求这些产品信息以计算机能理解的形式表示,而且在不同的计算机系统之间进行交换时保持一致和完整。产品数据的表达和交换,构成了,STEP,标准,,STEP,把产品信息的表达和用于数据交换的实现方法区分开来。,7,、,OpenGL,标准,OpenGL,(
37、Open Grepgics Library,)是在,SGI,等多家世界闻名的计算机公司的倡导下制定的一个通用共享的开放式的三维图形标准。它提供了一个标准的计算机图形学所使用的数学模型到显示的接口,并独立于硬件设备和操作系统。以它为基础开发的应用程序,可以运行于当前各种流行的操作系统并可方便地在各平台间移植。从个人机到工作站及超级计算机,利用它都能实现高性能的三维图形功能。由于,OpenGL,具有高度的可充用性和灵活性,它已经成为高性能图形和交互式视景处理的工业标准,广泛应用于军事、,CAD/CAM/CAE,、电视广播、娱乐、艺术造型、医疗影像、虚拟世界等方面。,OpenGL,的核心库包括一百
38、多个用于三维图形操作的函数,除了提供基本的点、线和多边形的绘制函数外,还提供了复杂的三维物体以及复杂曲线和曲面的绘制函数,主要负责处理对象的外形描述、几何变换和投影变换、绘制三维物体、光照和材质设置、颜色模式设置、着色、位图显示与图像增强、纹理映射、动画制作、交互操作等三维图形图像操作。,2.6 Visual C+,的图形程序开发方法,Windows,提供了丰富的内部函数,称为,API(Application Programming Interface),,其中的图形设备接口,GDI(Graphics Device Interface),是用于处理图形函数调用和驱动绘图设备的动态链接库。,Wi
39、ndows,应用程序就是通过使用,GDI,进行图形编程的。,为实现设备无关性,,GDI,定义了设备环境(又称设备上下文)。用户绘制屏幕时需通过设备环境,DC,间接实现。,Visual C+,的,MFC,封装了许多与设备环境相关的类,通过这些类可使用户很容易地对,DC,进行处理。这些类不仅包含,DC,自身,而且还有字体、画笔、画刷等绘图工具。,总体来说,图形编程就是通过调用,Windows,自带的,GDI,函数库中的函数和对,DC,进行操作,来完成绘制任务的。,2.6.1,图形设备接口,GDI,1,、图形设备接口,GDI,GDI,接受,Windows,应用程序的绘图请求(表现为,GDI,函数调用
40、并将它们传给相应的设备驱动程序,完成特定硬件的输出,如打印机打印和屏幕显示。,GDI,负责,Windows,的所有图形输出。,Windows,图形编程主要是调用,GDI,中的相关函数并通过获取,DC,的“状态”,以确定图形的颜色、尺寸等属性。应用程序使用,GDI,可创建三种类型的图形输出:矢量输出、光栅图形输出和文本输出。通过,GDI,可以实现对图形的颜色、线条的粗细等属性的控制。通过调用这些,GDI,函数操作硬件,可实现设备无关性。,2,、设备上下文,DC,Windows,不允许直接操作显示输出设备,而是通过一个抽象层与设备上下文进行通讯。设备上下文,DC(Device Context,
41、又称,设备环境,,也称,设备描述表,),实际上就是一个关于如何绘制图形方法的集合,它不仅可以绘制各种图形,而且还可以确定在应用窗口中绘制图形的方式,即确定绘图模式和映射模式。,DC,的数据结构存储了显示器,(,或打印机,),的性能、属性之类的详细信息,这些数据信息决定程序如何在显示器上进行显示。,在,Windows,环境下,所有图形输出都是在,DC,上进行的,。图形和输出类封装了设备环境和绘图工具,用来支持各种图形设备环境。,用户在绘图之前,必须获取绘图窗口区域的一个设备环境,DC,,然后才能进行,GDI,函数的调用,以执行适合于设备环境,DC,的命令。,另外,应该注意的是,,Windows
42、的设备环境是,GDI,的关键元素,它代表了不同的物理设备。,3,、,CDC,类,CDC,是设备上下文的基类,包含了绘图所需要的所有成员函数,(,包括部分虚函数,).,在,MFC,中,提出这些派生类的目的就是为了在不同的显示设备上进行显示。,函 数,说 明,Arc,(),绘制椭圆弧,BitBlt,(),把位图从一个,DC,拷贝到另一个,DC,Draw3dRect,(),绘制三维矩形,DrawDragRect,(),绘制用鼠标拖拽的矩形,DrawEdge,(),绘制矩形的边缘,DrawIcan,(),绘制图标,Ellipse,(),绘制椭圆,FillRect,(),用给定画刷的颜色填充矩形,Fi
43、llRgn,(),用给定画刷的颜色填充区域,GetBkColor(),获取背景颜色,GetCurrentBitmap(),获取所选位图的指针,GetCurrentBrush(),获取所选画刷的指针,GetCurrentFront(),获取所选字体的指针,GetCurrentPalette(),获取所选调色板的指针,GetCurrentPen(),获取所选画笔的指针,GetCurrentPosition(),获取画笔的当前位置,GetMapMode(),获取当前设置映射模式,GetPixel(),获取给定像素的,RGB,颜色值,(,1,),CDC,中常用的成员函数,GetTextColor(),
44、获取文本颜色,GetTextExtent(),获取文本宽度和长度,GetWindow(),获取,DC,窗口的指针,LineTo(),绘制线条,MoveTo(),设置当前画笔的位置,Pie(),绘制饼图,Polygon(),绘制多边形,Polyline(),绘制一组线条,RealizePalette(),将逻辑调色板映射到系统调色板,Rectangle(),绘制矩形,RoundRect(),绘制圆角矩形,SelectObject(),选取,GDI,绘图对象,SelectStockObject(),选取库存(预定义)图形对象,SetBkColor(),设置背景颜色对象,SetMapMode(),设
45、置映射模式,SetPixel(),把像素设置成给定颜色,SetTextColor(),设置文本颜色,StretchBlt(),把位图从一个,DC,拷贝到另一个,DC,,并根据需要扩充或压缩位图,TextOut(),绘制文本串,(,2,),CDC,类的派生类,派生类名称,说 明,CClientDC,提供对窗口客户区域的图形访问。在窗口中画图时可使用此类,DC,,但,WM_PAINT Windows,消息除外。,CMetaFileDC,代表,Windows,图元文件,它包含一系列命令已重新产生图形。想要创建独立于设备的文件时可使用此类,DC,,用户可以回放这种文件来创建图像。,CPaintDC,创
46、建响应,WM_PAINT Windows,消息,通常在,MFC,应用程序的,OnPaint(),函数中使用。,CWindowDC,可以提供在整个窗口(包括客户区和非客户区)中画图的设备环境。,(,3,),CDC,类的调用函数,与设备环境有关的常用函数:,GetDC(),函数:,用于获取指定窗口的客户区的显示器设备环境,原型声明如下:,CDC*CWnd:GetDC();,ReleaseDC(),函数:,用于释放由调用,GetDC,或,GetWindowDC,函数获取的指定设备环境。它对类或私有设备环境无效,以便该设备环境可以被其它应用程序使用。,其原型声明如下:,int ReleaseDC(CD
47、C*pDC);/pDC,为待释放的设备环境的指针,BeginPaint(),函数:,为在指定的窗口中画图做准备工作,并且把与绘图有关的信息填写到,PAINTSTRUCT,结构中。,原型声明如下:,CDC*CWnd:BeginPaint(LPPAINTSTRUCT lpPaint),;,lpPaint,参数是指向,PAINTSTRUCT,结构的指针。,若函数调用成功则返回指定窗口的显示器设备环境的指针,否则返回,NULL,EndPaint(),函数,EndPaint(),函数是用来结束指定窗口中的绘图过程,其原型声明如下:,void EndPaint(LPPAINTSTRUCT lpPaint)
48、其参数的含义与,BeginPaint(),函数中的相同,返回值总是,TRUE,。,SelectObject(),函数,SelectObject(),函数用于把位图、画笔、画刷等,GDI,对象选入设备环境中,用新的对象替代同一类型的对象,其原型声明如下:,CPen*SelectObject(Cpen*pPen);,CBrush*SelectObject(CBrush*pBrush);,virtual CFont*SelectObject(CFont*pFont);,CBitmap*SelectObject(CBitmap*pBitmap);,int SelectObject(CRgn*pRg
49、n);,DeleteObject(),函数,DeleteObject(),函数可以删除逻辑画笔、画刷、字体、位图、区域或调色板对象,并释放所有与该对象相关的系统资源,当对象被删除之后,则指定的对象句柄将无效。其原型声明如下:,BOOL DelectObject(HGDIOBJ hObject);,4,、,GDI,对象,GDI,对象基类是,CGdiObject,。使用,GDI,对象时要注意以下两点。,同其它,MFC,对象一样,,GDI,对象的创建分为两步:第一步定义一个,GDI,绘图对象类的实例;第二步调用该对象的创建方法真正创建对象。,使用该对象时,首先要调用,CDC:SelectObject
50、),,将它选入到设备上下文中,同时保存原来的设置到一个,GDI,对象指针如,pOldObject,中。在使用完后,再用,SelectObject(pOldObject),恢复原来的设置。但是,如果该设备上下文是用户自己创建的,则不必恢复原来设置,因为框架会在该设备上下文生存期结束时删除该设备上下文,同时也就删除了原来存放于该设备上下文中的绘图对象设置。,具体应用参见下面的,OnDraw,函数。,void CMyProjectView:OnDraw(CDC*pDC),Cpen NewPen,(,PS_SOLID,1,RGB(0,0,0),),;/,构造画笔类对象,/,选择新设备环境的同时,保存






