图形程序运行的条件

                  图形程序运行的条件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Turbo C为用户提供了一个功能很强的画图软件库,它又称为BorLand图形接口(BGI),它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器(图形终端)的驱动程序(如CGA.BGIEGAVGA.BGI等)。还有一些字符集的字体驱坳程序(如goth.chr黑体字符集等)。编写图形程序时用到的一些图形库函数均在graphics.lib 中,执行这些函数时,所需的有关信息(如宏定义等)则包含在graphics.h头文件中。因此用户在自已的画图源程序中必须包括graphics.h头文件,在进行目标程序连接时,要将graphics.lib连接到自己的目标程序中去。

                  图形系统的初始化

   在编制图形程序时,进入图形方式前,首先要在程序中对使用的图形系统初始化,即要用什么类型的图形显示适配器的驱动程序,采用什么模式的图形方式(也就是相应程序的入口地址),以及该适配器驱动程序的寻找路径名。所用系统的显示适配器一定要支持所选用的显示模式,否则将出错。Turbo.C提供了一个图形系统初始化函数initgraph可完成这些功能。

图形系统的初始化函数

void far initgraph(int far *driver, int far *mode, char for path-for-driver);当我们使用的存储模式为tiny(微型)、 small(小型)或medium(中型)时,不需要远指针,因而可以将初始化函数调用格式写成如下形式(该说明适用于后面所述的任一函数):  intitgrapg(&graphdriver, &graphmode,,””);  其中驱动程序目录路径为空字符“”时,表示就在当前目录下,参数graphmode用所示的模式号或标示符来定义,参数graphdriver是一个枚举变量{DETECT,CGA,VGA,…},一般: graphdriver=DETECT

一旦执行了初始化,显示器即被设置成相应模式的图形方式。下面是某画图程序的开始部分,它包括对图形系统的初始化:

#include”graphics.h”

main()

{

int graphdriver=DETECT;

int graphmode;

intgraph(& graphdriver, & graphmode,””);

上面初始化过程中,将由DETECT检测所用适配器类型,并将当前目录下相应的驱动程序装入,并采用最高分辩率显示模式作为graphmode的值。如检测到为CGA适配器时,则graphmode等于4或为CGAHI,若检测到VGA适配器,则graphmode等于2或为VGAHI

       图形程序运行的条件

由于图形程序运行并显示图象直接与显示器有关,而如何控制驱动显示器进行显示,Tubro C并没有向用户提供这种技术,而这也是不必要的,因它与显示器硬件结构息息相关,编程者并不需要知道这些东西,否则太复杂了!但用户的图形程序要能运行并显示,则必须要包含有驱动显示器的这种程序。不同种类的显示器因硬件结构不同,因而驱动程序也不同,这些驱动程序已经在Tubro C系统盘上提供。在用户的图形程序中,进行图形系统初始化时,即执行函数。

initgraph(&graphdriver,&graphmode,char path-for-driver);

时,程序就按照path-for-driver所指的路径将图形驱动程序装入内存。这样,以后的图形功能才能被支持。若在所指路径下找不到相应显示器的驱动程序,或没有对驱动程序进行装入操作,则运行图形程序时,就会在屏幕上显示出错信息:

BGI  Error: Graphics not initialized(use”initgraph”)

Tubro C20安装在软盘上时,没有安装上图形驱动程序(如CGABGIEGAVGA.BGI等),所以必须在工作盘上复制上这些文件,否则图形程序就无法运行,而出现上述的错误信息。

那么,能不能不用egavga.bgi而运行图形程序,用以下步骤就可以:

\tc\bgiobj egavga

\tc\tlib lib\graphics.lib+egavga.obj

编程序时在用initgraph()之前先调用registerbgidriver(EGAVGA_driver);

 

posted on 2006-03-02 22:00 Aween's Blog 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/aween/archive/2006/03/02/341566.html

猜你喜欢

转载自blog.csdn.net/weixin_33874713/article/details/94574926