initgraph

来源:互联网 发布:科学家 隐瞒 知乎 编辑:程序博客网 时间:2024/06/06 00:34

我的电脑运行C语言"initgraph"图象函数时出现这样的语句:BGI Error: Graphics not initialized(use 'initgraph')这是为什么啊?我该怎么做才能使用图象啊!!!!!!!!!!!
哪位高手帮帮我吧!

 

initgraph

函数名: initgraph()
功 能: 初始化图形系统
函数原型: void far initgraph(int far *graphdriver, int far *graphmode,
char far *pathtodriver);
头文件:graphics.h
程序例:

#include "graphics.h"
#include "stdio.h"

int main(void)
{
/* request auto detection */
int gdriver = DETECT, gmode, errorcode;

/* initialize graphics mode */
initgraph(&gdriver, &gmode, "");

/* read result of initialization */
errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1); /* return with error code */
}

/* draw a line */
line(0, 0, getmaxx(), getmaxy());

/* clean up */
getch();
closegraph();
return 0;
}

Turbo C对于用initgraph()函数直接进行的图形初始化程序,
在编译和链接
时并没有将相应的驱动程序(*.BGI)装入到执行程序, 当程序进行到intitgraph()
语句时,
再从该函数中第三个形式参数char *path中所规定的路径中去找相应的
驱动程序。若没有驱动程序, 则在C:/TC中去找,
如C:/TC中仍没有或TC不存在,
将会出现错误:
BGI Error: Graphics
not initialized (use 'initgraph')
因此, 为了使用方便,
应该建立一个不需要驱动程序就能独立运行的可执行
图形程序,Turbo C中规定用下述步骤(这里以EGA、VGA显示器为例):

1. 在C:/TC子目录下输入命令:BGIOBJ EGAVGA

此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。
2.
在C:/TC子目录下输入命令:TLIB LIB/GRAPHICS.LIB+EGAVGA

此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。
3.
在程序中initgraph()函数调用之前加上一句:

registerbgidriver(EGAVGA_driver):
该函数告诉连接程序在连接时把EGAVGA的驱动程序装入到用户的执行程序中。

经过上面处理,编译链接后的执行程序可在任何目录或其它兼容机上运行。
假设已作了前两个步骤,若再向例6中加
registerbgidriver()函数则变成:
例7:

#include<stdio.h>

#include<graphics.h>

int main()
{

int gdriver=DETECT,gmode;


registerbgidriver(EGAVGA_driver): / *建立独立图形运行程序 */

initgraph( gdriver,
gmode,"c://tc");

bar3d(50,50,250,150,20,1);

getch();
closegraph();

return 0;

}
上例编译链接后产生的执行程序可独立运行。

如不初始化成EGA或CGA分辨率, 而想初始化为CGA分辨率, 则只需要将上述

步骤中有EGAVGA的地方用CGA代替即可。
参考资料:http://course.cug.edu.cn/cugFirst/Adv_program/C_ziliao/ctuxin1.htm

http://www.80diy.com/home/20030105/16/1328639.html

http://course.cugnc.com/cugFirst/Adv_program/index.asp

#include <graphics.h>
main()
{
int gdriver,gmode;
gdriver=DETECT;
  initgraph(&gdriver,&gmode,"c:/turboc2");
  circle(100,100,50);
getch();
closegraph();
}

出现提示:BGI Error:Graphics not initialized (use 'initgraph')
回复人:曾鹏程 回复时间:2004-3-18 13:57:00 #include <graphics.h>
main()
{
int gr=DETECT,gm;
initgraph(&gr,&gm,"");
circle(100,100,50);
getch();
closegraph();
}
这样就行了。