我的电脑运行C语言"initgraph"图象函数时出现这样的语句:BGI Error: Graphics not initialized(use '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(); } 这样就行了。 |