注册 登录
编程论坛 C图形专区

初学图形编程问题

bihu 发布于 2007-08-04 21:04, 1889 次点击
#include<stdio.h>
#include<graphics.h>
main()
{
int a=DETECT,g;
initgraph(&a,&g,"C:\Program Files\WINYES\TC20H");
circle(200,100,50);
closegraph();
}
编译后运行时候出现了
BGI Error:Graphics not initialized(use'initgraph' )
环境是TC2.0,xp下
7 回复
#2
hjj11232007-08-05 09:15

建议你把论坛里所有帖子看一遍在提问。

#3
卧龙孔明2007-08-05 10:52
回复:(bihu)初学图形编程问题

看看这个

只有本站会员才能查看附件,请 登录

#4
勇勇2007-09-05 09:43
我也想学但是不知道怎么学啊!
#5
neverTheSame2007-09-07 23:47
我建议:先熟悉TC2.0图形编程环境,然后,了角一些重要的绘图函数,然后,自己编一些小的图形程序,
然后,编大一点的程序,最后...
#6
yesmimiwei2010-01-16 21:37

● 提示 BGI Error

用TC写BGI图形编程的代码时,最容易出现 BGI Error 的问题,例如在屏幕上提示这样一行字: Graphics not initialized (use 'initgraph') 然后程序就退出了。在WIN98下这行字能够看到,但是在WIN2000或WINXP下就闪一下这行字(实际上这行字在WIN2K或XP下会显示出来的,只不过时间太短了你看不到罢了)直接退出了。这行字是什么意思呢?从字面上理解,就是没有initgraph啊?但是程序的代码里面确实是写了initgraph啊?这样的出错提示,的确让很多编程者摸不着头脑。实际上,它的问题并不出在没有使用initgraph上,是你没有使用正确的路径。

TC BGI提供了一个graphics.h,一个graphics.lib,一堆.bgi文件和一个bgiobj.exe。就当前问题来说,是.bgi导致了你的错误出现。例如最常见的

  int gd=VGA,gm=VGAHI;
  initgraph(&gd,&gm,"c:\tc20");

来说,它的意思是initgraph使用gd为bgi驱动包,该驱动包里使用gm的屏幕模式初始化,最后一个参数就是该bgi驱动包的位置。例如上面的代码,就是说使用VGA模式(该模式驱动包含于egavga.bgi),使用其中的VGAHI方式(640*480 16 color)初始化屏幕,该驱动包位于"c:\tc20"目录下。你会问如果egavga.bgi不在"c:\tc20"下呢?那么 Graphics not initialized (use 'initgraph') 的问题就出现啦!

但是指定bgi路径总不太好,不可能每个人的电脑上都在"c:\tc20"下有你需要的bgi文件。把bgi文件拷贝到你指定的路径如"c:\tc20"下也显得太麻烦。有没有好的解决方法呢?有,下面就是两种通常的解决方法:

方法一:

使用相对路径。相对路径你也许不知道,在次也不必来龙去脉把相对路径的使用说得特别清楚。简单地说,就是initgraph的最后一个字符串使用空"",然后生成的EXE,将自动在同级目录下找对应的bgi来运行。就上一个程序打个比方,把它最后一个字符串写成空串"",如:

  int gd=VGA,gm=VGAHI;
  initgraph(&gd,&gm,"");

这样一来,只要程序目录下有egavga.bgi,就可以运行。如果你是在c:\tc20下的TC集成环境里运行的,那么只需要把egavga.bgi拷贝到c:\tc20下即可。如果你又把你所生成的EXE文件拷贝到桌面上,也只需要把egavga.bgi拷贝到桌面上你的程序即可运行啦。总之一句话:使用这种方法,须保证你EXE使用的bgi文件与你生成的EXE文件同目录。

方法二:

更方便的是,WIN-TC提供了模板的功能,其中的一个就是“BGI图形编程模板”。使用该模板生成的EXE,如果是用ega或vga模式的话,连.bgi文件都可以不需要来直接运行你的EXE啦,也就是说,如果你要把你的BGI图形EXE程序让别人去运行,即使是没有装TC的电脑上,也只需要一个EXE就能成功初始化BGI了,是不是很方便啊?
1