您的位置:首页 > 其它

c 语言中的图形模式

2016-12-25 12:20 218 查看
为了弄清c语言的图形模式的函数,在网上查了些资料,在此声明以下的资料完全来自于网上,放在这里与大家共享。

    Turbo
C提供了非常丰富的图形函数,
所有图形函数的原型均在graphics. h中,
本节主要介绍图形模式的初始化、独立图形程序的建立、基本图形功能、图形窗口以及图形模式下的文本输出等函数。另外,
使用图形函数时要确保有显示器图形驱动程序*BGI,
同时将集成开发环境Options/Linker中的Graphics
lib选为on,
只有这样才能保证正确使用图形函数。

1. 图形模式的初始化

  
不同的显示器适配器有不同的图形分辨率。即是同一显示器适配器,
在不同模式下也有不同分辨率。因此,
在屏幕作图之前,
必须根据显示器适配器种类将显示器设置成为某种图形模式,
在未设置图形模式之前,
微机系统默认屏幕为文本模式(80列, 25行字符模式),
此时所有图形函数均不能工作。设置屏幕为图形模式,
可用下列图形初始化函数:

   void far initgraph(int far
*gdriver, int far *gmode, char *path);

  
其中gdriver和gmode分别表示图形驱动器和模式,
path是指图形驱动程序所在的目录路径。有关图形驱动器、图形模式的符号常数及对应的分辨率见表2。

   图形驱动程序由Turbo
C出版商提供,
文件扩展名为.BGI。根据不同的图形适配器有不同的图形驱动程序。例如对于EGA、
VGA 图形适配器就调用驱动程序EGAVGA.BGI。

   表2.
图形驱动器、模式的符号常数及数值

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  
图形驱动器(gdriver) 
图形模式(gmode)

  
———————————    
———————————   
色调  分辨率

  符号 
常数   
数值  
符号常数    
数值

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 
CGA         
1

CGAC0 0 
C0   
320*200

CGAC1 1 
C1   
320*200

CGAC2 2 
C2   
320*200

CGAC3 3 
C3   
320*200

CGAHI 4  2色  
640*200

———————————————————————————————————

 
MCGA        


MCGAC0  0 
C0   
320*200

MCGAC1  1 
C1   
320*200

MCGAC2  2 
C2   
320*200

MCGAC3  3 
C3   
320*200

MCGAMED 4 
2色   640*200

MCGAHI  5 
2色   640*480

———————————————————————————————————

 
EGA         


EGALO 0 16色   640*200

EGAHI 1 16色   640*350

———————————————————————————————————

 
EGA64       


EGA64LO 0 16色  
640*200

EGA64HI 1 
4色   640*350

———————————————————————————————————

 
EGAMON      


EGAMONHI0 
2色   640*350

———————————————————————————————————

 
IBM8514     


IBM8514LO      
0256色   640*480

IBM8514HI      
1256色  1024*768

———————————————————————————————————

 
HERC        
7

HERCMONOHI    
0  2色  
720*348

———————————————————————————————————

 
ATT400      


ATT400C0  0 
C0   
320*200

ATT400C1  1 
C1   
320*200

ATT400C2  2 
C2   
320*200

ATT400C3  3 
C3   
320*200

ATT400MED 4 
2色   320*200

ATT400HI  5 
2色   320*200

———————————————————————————————————

 
VGA         


VGALO   0
16色   640*200

VGAMED  1
16色   640*350

VGAHI   2
16色   640*480

———————————————————————————————————

 
PC3270      
10

PC3270HI  0  
2色   720*350

———————————————————————————————————

 
DETECT      
0   用于硬件测试

例4.
使用图形初始化函数设置VGA高分辨率图形模式

#include<graphics.h> 

int main()

{

int gdriver, gmode;

gdriver=VGA;

gmode=VGAHI;

initgraph(&gdriver, &gmode, "c:\\tc");

bar3d(100, 100, 300, 250, 50,
1);      

getch();

closegraph();

return 0;

   }

有时编程者并不知道所用的图形显示器适配器种类,
或者需要将编写的程序用于不同图形驱动器, Turbo
C提供了一个自动检测显示器硬件的函数, 
其调用格式为:

   void far detectgraph(int
*gdriver, *gmode);

 
其中gdriver和gmode的意义与上面相同。

  例5.
自动进行硬件测试后进行图形初始化

  
#include<graphics.h>

   int main()

   {

int gdriver, gmode;

detectgraph(&gdriver,
&gmode);    

printf("the graphics driver is %d, mode is %d\n", gdriver,
gmode);      

getch();

initgraph(&gdriver, &gmode,
"c:\\tc"); 

bar3d(10, 10, 130, 250, 20, 1);

getch();

closegraph();

return 0;

    }

   
上例程序中先对图形显示器自动检测,
然后再用图形初始化函数进行初始化设置, 但Turbo
C提供了一种更简单的方法, 
即用gdriver= DETECT
语句后再跟initgraph()函数就行了。采用这种方法后,
上例可改为:

  例6.

  
#include<graphics.h>

   int main()

   {

int gdriver=DETECT, gmode;

initgraph(&gdriver, &gmode, "c:\\tc");

bar3d(50, 50, 150, 30, 1);

getch();

closegraph();

return 0;

   }

  另外, Turbo
C提供了退出图形状态的函数closegraph(),
其调用格式为:

   void far
closegraph(void);

 
调用该函数后可退出图形状态而进入文本方式(Turbo
C 默认方式),
并释放用于保存图形驱动程序和字体的系统内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: