C语言图形模式速成
下载后可任意编辑 第一节 图形模式的初始化 Turbo C 提供了非常丰富的图形函数,所有图形函数的原型均在graphics. h 中,本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。 另外,使用图形函数时要确保有显示器图形驱动程序*.BGI,同时将集成开发环境options/Linker中的Graphics lib选为on,只有这样才能保证正确使用图形函数。 不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,在不同模式下也有不同分辨率。因此,在屏幕作图之前,必须根据显示器适配器种类将显示器设置成为某种图形模式,在未设置图形模式之前,微机系统默认屏幕为文本模式(80列,25行字符模式),此时所有图形函数均不能工作。设置屏幕为图形模式,可用下列图形初始化函数: void far initgraph(int far *gdriver, int far *gmode,char *path); 其中gdriver和gmode分别表示图形驱动器和模式,path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见graphics. h。 图形驱动程序由Turbo C出版商提供,文件扩展名为.BGI。 根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、 VGA 图形适配器就调用驱动程序EGAVGA.BGI。 #include “stdio.h“ #include “graphics.h“ int main() { int gdriver, gmode; gdriver=VGA; gmode=VGAHI; initgraph( bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/ getch(); closegraph(); return 0; } 有时编程者并不知道所用的图形显示器适配器种类,或者需要将编写的程序用于不同图形驱动器,Turbo C 提供了一个自动检测显示器硬件的函数,其调用格式为: void far detectgraph(int *gdriver, *gmode); 其中gdriver和gmode的意义与上面相同。 自动进行硬件测试后进行图形初始化: #include “stdio.h“ #include “graphics.h“ int main() { int gdriver, gmode; detectgraph( /*自动测试硬件*/ printf(“the graphics driver is %d, mode is %d\n“,gdriver,gmode); /*输出测试结果*/ getch(); initgraph( /* 根据测试结果初始化图形*/ bar3d(100, 100, 300, 250, 50, 1); /*画一长方体*/ getch(); closegraph(); return 0; } 上例程序中先对图形显示器自动检测,然后再用图形初始化函数进行初始化设置,但Turbo C提供了一种更简单的方法, 即用gdriver=DETECT 语句后再跟initgraph()函数就行了。 采纳这种方法后,上例可改为: #include “stdio.h“ #include “graphics.h“ int main() { int gdriver=DETECT, gmode; initgraph( bar3d(50, 50, 150, 30, 50, 1); getch(); closegraph(); return 0; } 另外,Turbo C 提供了退出图形状态的函数closegraph(),其调用格式为: void far closegraph(void); 第二节 屏幕颜色的设置和清屏函数 对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo C中分别用下面两个函数: 设置背景色: void far setbkcolor(int color); 设置作图色: void far setcolor(int color); 其中color 为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见graphics.h。 清除图形屏幕内容但不清除图形背景使用清屏函数,其调用格式如下: voide far cleardevice(void); #include “stdio.h“ #include “graphics.h“ int main() { int gdriver, gmode, i,aa; gdriver=DETECT; initgraph( /*图形初始化*/ setbkcolor(0); /*设置图形背景*/ cleardevice(); for(i=0; i<=15; i++) { setcolor(i); /*设置不同作图色*/ circle(320, 240, 20+i*10); /*画半径不同的圆*/ getch(); } for(i=0; i<=15; i++) { setbkcolor(i); /*设置不同背景色*/ cleardevice(); circle(320, 240, 20+i*10); getch(); } aa=getmaxcolor(); printf(“maxcolor=%d“,aa); getch(); closegraph(); return 0; } 另外,TURBO C也提供了几个获得现行颜色设置情况的函数。 int far getbkcolor(void); 返回现行背景颜色值。 int far getcolor(void); 返回现行作图颜色值。 int far getmaxcolor(void); 返回最高可用的颜色值。 第三节 基本画图函数 基本图形函数包括画点,线以及其它一些基本图形的函数。本节对这些函数作一全面的介绍。 1、画点 I. 画点函数 void far putpixel(int x, int y, int color); 该函数表示有指定的象元画一个按color 所确定颜色的点。对于颜色color的值可从表3中获得而对x, y是指图形象元的坐标。 在图形模式下,是按象元来定义坐标的。对VGA适配器,它的最高分辨率为640 x480,其中640为整个屏幕从左到右所有象元的个数,480为整个