C语言实践教程-电子教案-姚大鹏 第4章课件

上传人:E**** 文档编号:89388430 上传时间:2019-05-24 格式:PPT 页数:62 大小:352.01KB
返回 下载 相关 举报
C语言实践教程-电子教案-姚大鹏 第4章课件_第1页
第1页 / 共62页
C语言实践教程-电子教案-姚大鹏 第4章课件_第2页
第2页 / 共62页
C语言实践教程-电子教案-姚大鹏 第4章课件_第3页
第3页 / 共62页
C语言实践教程-电子教案-姚大鹏 第4章课件_第4页
第4页 / 共62页
C语言实践教程-电子教案-姚大鹏 第4章课件_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《C语言实践教程-电子教案-姚大鹏 第4章课件》由会员分享,可在线阅读,更多相关《C语言实践教程-电子教案-姚大鹏 第4章课件(62页珍藏版)》请在金锄头文库上搜索。

1、4.1 图形状态显示原理 Turbo C2.0默任显示方式为文本方式,这种显示方式就是我们平时看到的情况。但是图形方式和文本方式不同,在图形方式下我们可以画图,它的显示单位是像素。显示器显示的图形是由一些圆点组成的 (其亮度、颜色不同),这些点被称为像素。满屏显示像素多少,则决定了显示的分辨率高低,可以看出像素越小(或个数越多),则显示的分辨率越高。像素在屏幕上的位置则由其所在的 x,y 坐标值决定。,图形绝对坐标系统,定义屏幕的左上角为原点,正x轴向右延伸,正y轴向下延伸,即x和y坐标值均为非负整数,但它的最大值则由显示器的类型和显示方式来决定,即显示的像素大小可以通过设置不同的显示方式来改

2、变。 我们称这种相对屏幕显示的坐标叫物理坐标或绝对坐标。 还有一种坐标叫相对坐标,它的参照物是图视窗口。图视窗口就是指在物理坐标区间又开辟一个或多个区间,在这些区间又可定义一个相对坐标系统,这样以后画图均可在此区间进行,并以相对坐标来定义位置。,Turbo C2.0为用户提供了一个功能很强的画图软件库,它又被称为Borland图形接口(BGI),它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序。还有一些字符集的字体驱动程序。 编写图形程序时用到的一些图形库函数均在graphics. lib中,执行这些函数时,所需的有关信息则

3、包含在graphics. h头文件中。 因此用户在自己的画图源程序中必须包括graphics. h头文件,在进行目标程序连接时,要将graphics. lib 连接到自己的目标程序中去。,4.1.1 图形显示器与适配器 计算机中显示的字符和图形均以数字形式存储在存储器中,而显示器接收的是模拟信号。 插在PC 机插槽中的图形卡的作用就是将要显示的字符和图形以数字形式存储在卡上的视频存储器VRAM中,再将其变成视频模拟信号送往相应适配的显示器显示。 这表明适配器在计算机主机和显示器之间起到了信息转换和视频发送作用,但是由于显示器种类不同,因而适配器种类也就不同,同样不同适配器又可支持不同的分辨率显

4、示方式、文本显示方式和颜色设置。,因此不同的适配器导致了不同的图形模式,其中常用的适配器是主要下面三种: 1) 彩色图形适配器(CGA) 这是PC/XT等微机配用的图形卡,它可以产生单色或彩色字符和图形。在图形方式下,Turbo C2.0支持两种分辨率供选择:一种为高分辨方式(CGAHI),像素数为640200,这时背景色是黑的(当然也可重新设置),前景色可供选择,但前景色只是同一种,因而图形只显示两色;另一种为中分辨显示方式,像素数为320200,其背景色和前景色均可由用户选择,但仅能显示四种颜色。 在该显示方式下,有四种模式供选择,即 CGAC0,CGACl,CGAC2,CGAC3,它们的

5、区别是显示的4种颜色不同。,2) 增强型图形适配器EGA 该适配器除支持CGA的四种显示模式外,还增加了Turbo C2.0称为 EGALO(EGA 低分辨显示方式,分辨率为 640200)的16色显示方式,和 640350 的EGAHI(EGA 高分辨显示方式,分辨率为 640350)的16色显示方式。 3) 视频图形阵列适配器(VGA) 它支持CGA和EGA的所有显示方式,但自己还有 640480的高分辨显示方式(VGAHI)、640350 的中分辨显示方式(VGAMED)和640200的低分辨显示方式(VGALO),它们均可有16种显示颜色可供选择。 众多生产厂家推出了许多性能优于VGA

6、但名字各异的图形显示系统,美国标准协会为此制定了主要性能标准,我们常将属于这类的显示适配卡统称为 SVGA。目前我们基本上使用的都是属于SVGA,它也可以使用VGA卡方式进行编程。,4.1.2显示器的两种工作方式 显示器的两种工作方式,即文本显示方式和图形显示方式。 它们的主要差别是: 选择文本方式时,VRAM存放要显示字符的ASCII码值,并用它作为地址,然后取出字符发生器ROM(固定存储器)中存放的相应字符的图像(又称字模),变成视频信号在显示器屏上进行显示。 选择图形方式时,则要显示的图形的图像直接存在VRAM中,VRAM中某地址单元存放的数就表示了相应屏幕上某行和列上的像素及颜色。,4

7、.1.3图形系统的初始化和关闭 编制图形程序时,在进入图形方式前,首先要在程序中对使用的图形系统进行初始化,即要选择采用什么类型的适配器驱动程序,采用什么模式的图形方式,以及该适配器驱动程序的寻找路径名。 注意所用系统的适配器一定要支持所选用的显示模式,否则将出错。 当图形系统初始化后,我们才可以进行画图操作。,图形系统初始化函数 Turbo C2.0提供的initgraph函数可完成图形系统初始化的功能。其原型是: void far initgraph (int far *driver,int far *mode,char far *path_for_driver); 当我们使用的存储模式为

8、 tiny(微型)、small(小型)或 medium(中型)时,不需要远指针,因而可以将初始化函数的调用格式改成如下形式: initgraph (&driver,&mode,” ”);其中驱动程序目录路径为空字符” ”时,表示在当前目录下,,参数driver是一个枚举变量,它属于显示器驱动程序的枚举类型 。 当我们不知道所用显示适配器名称时,可将driver 设成DETECT,它将自动检测所用显示适配器类型,并将相应的驱动程序装入系统,并将其最高显示模式作为当前显示模式,,例 :下面是一般画图程序的开始部分,它包括对图形系统的初始化: #include main() int driver=D

9、ETECT; int mode; initgraph(&driver,&mode,”); 在本例初始化过程中,先由DETECT检测所用适配器类型,并将当前目录下相应的驱动程序装入系统,并采用最高分辨率显示模式作为mode的值。,清屏和恢复显示方式的函数 清屏函数的原型是: void far cleardevice (void); 该函数作用范围为整个屏幕,如果用函数setviewport定义一个图视窗口,则可采用清除图视窗口函数,它仅清除图视窗口区域内的内容,该函数的原型是: void far clearviewport(void); 当画图程序结束后,系统要回到文本方式,这时应该关闭图形系统

10、,关闭图形系统的函数原型是: void far closegraph (void)。 由于进入Turbo C2.0环境编程时,即已经进入文本方式,因而为了在画图程序结束后恢复原来的最初状况,一般在画图程序结束前调用该函数,使其恢复到文本方式。,4.2 绘图基本方法 4.2.1基本绘图函数 当图形系统初始化后,要进行的画图操作均可采用缺省值作为参数的当前值。 画点函数: void far putpixel(int x,int y,int color): 该函数表示在指定的x,y 处画一点,点的颜色由设置的color值来决定。 int far getpixel(int x,int y): 该函数与

11、putpixel()相对应,它得到在(x,y)点位置上的像素的当前颜色值。,有关坐标位置的函数 void far moveto (int x,int y): 该函数移动画笔到指定的(x,y)位置; void far moverel (int dx,int dy): 该函数从现行位置(x,y)移到一位置增量处(x+dx,y+dx); int far getx(void):得到当前画笔的x位置; int far gety(void):得到当前画笔的y位置; 画线函数 这类函数提供了用设定的颜色从一个点到另一个点画一条直线的功能,由于起始点的设定方法不同,因而有下面不同的画线函数:,void far

12、 line(int x0,int y0,int x1,int y1): 该函数从(x0,y0)点到(x1,y1)点画一直线。 void far lineto(int x,int y); 该函数从现行画笔位置到(x,y)点画一直线。 void far linerel(int dx,int dy): 该函数从现行画笔位置(x,y)到位置增量处(x+dx,y+dy)画一直线。 画矩形和条形图函数 void far rectangle(int xl,int y1,int x2,int y2): 该函数将以(x1,y1)为左上角,(x2,y2)为右下角画一矩形框。,void bar (int x1,in

13、t y1,int x2,int y2): 该函数将以(xl,y1)为左上角,(x2,y2)为右下角画一实形条状图,没有边框,图的颜色和填充模式可以设定。若没有设定,则使用缺省模式。 void far drawpoly (int numpoints, int far *polypoints): 该函数画一个顶点数为numpoints, 各顶点坐标由polypoints 给出的多边形。 polypoints整型数组必须至少有2倍顶点数个元素。每一个顶点的坐标都定义为x, y, 并且x在前。值得注意的是当画一个封闭的多边形时, numpoints 的值取实际多边形的顶点数加一, 并且数组polypo

14、ints中第一个点和最后一个点的坐标相同。,例4-3:用drawpoly( )函数画箭头。 # include # include main() int gdriver, gmode, i; int arw16=200, 102, 300, 102, 300, 107, 330,100, 300, 93, 300, 98, 200, 98, 200, 102; gdriver=DETECT; initgraph( ,例4-4:下面的程序将由rectangle函数以(100,20)为左上角,(200,50)为右下角画一矩形,接着又由bar函数以(100,80)为左上角,(150,180)为右下角

15、画一实形条状图,用缺省颜色(白色)填充。 # include main() int driver=DETECT; int mode, x; initgraph(&driver,&mode,” ”); cleardevice(); rectangle(100,20,200,50); bar(100,80,150,180); getch(); closegraph(); ,画椭圆、圆和扇形图函数 有关于角的概念,在Turbo C 2.0中是这样规定的:屏的x轴方向为 0 度,当半径从此处逆时针方向旋转时,则依次是90度、180度、270度,到360度时,则和 x轴正向重合,即旋转了一周。如图所示。

16、 void ellipse(int x,int y,int stangle, int endangel,int xradius,int yradius): 该函数将以(x,y)为中心,以xradius和yradius为x轴和y轴半径,从起始角 stangle开始到endangle角结束,画一椭圆线。当stangle=0,endangle=360时,则画出的是一个完整的椭圆,否则画出的将是椭圆弧。,角的概念,void far circle(int x,int y,int radius): 该函数将以(x,y)为圆心,radius 为半径画个圆。 void far arc( int x,int y,int stangle, int endangle,int radius): 该函数将以(x,y)为圆心,radius为半径,从stangle为起始角开始,到endangle为结束角画一圆弧。 void far pieslice( int x,int y,int stangle, int endangle,int radius):

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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