C语言图形下编程问题(50分)

tc001 2002-09-12 11:10:24
C语言图形下编程问题:
BGI Error:Graphics not initialized (use 'initgraph')
我该怎么办?
...全文
22 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sjf331 2002-09-13
  • 打赏
  • 举报
回复
tc的一个option_>link->lib->graphics library设成true
dsangvei 2002-09-13
  • 打赏
  • 举报
回复
楼上的实在太详细了,让我只有说同意了。
zm_speed 2002-09-13
  • 打赏
  • 举报
回复
大家知道,C/C++语言提供了十分丰富的图形函数,图形函数文件为Graphics.h,使用图形函数前须 先将屏幕设置为图形模式, C/C++语言提供了下面的函数:

  void far initgraph(int far *GD,int far * GM,char *P);

  其中,GD和GM分别表示图形驱动程序和图形模式, P指图形驱动程序所在的目录路径。

  图形驱动程序由Borland公司(对于Turbo C和Bor land C++)提供,同时C/C++语言还提供了退出图形状 态的函数closegraph(),格式为:

  void far closegraph(void);

  也许你经常在用C/C++语言编写一些图形程序,但是总不能脱离 C/C++语言环境独立运行,我们怎样 来解决呢 ?

  能否建立一个不需要驱动程序和字体文件也能独立运行的图形程序呢 ? 笔者经过实践,得到了肯定的答案 ,下面是实现图形程序独立运行的具体步骤:

  1?将驱动程序EGAVGA.BGI转换成目标文件EGAVGA.OBJ:

  D:\BC\BGI>BGIOBJ EGAVGA

  按同样的办法,将字体文件*.CHR转换成目标文件*.OBJ:

  D:\BC\BGI>BGIOBJ TRIP

  D:\BC\BGI>BGIOBJ LITT

  D:\BC\BGI>BGIOBJ SANS

  D:\BC\BGI>BGIOBJ GOTH

  2?将上述建立的OBJ文件加入到GRAPHICS.LIB 库文件中,具体方法如下:

  D:\BC\BGI>TLINK D:\BC\LIB\GRAPHICS.LIB+E GAVGA

  D:\BC\BGI>TLINK D:\BC\LIB\GRAPHICS.LIB+T RIP

  D:\BC\BGI>TLINK D:\BC\LIB\GRAPHICS.LIB+L ITT

  D:\BC\BGI>TLINK D:\BC\LIB\GRAPHICS.LIB+S ANS

  D:\BC\BGI>TLINK D:\BC\LIB\GRAPHICS.LIB+G OTH

  也可以使用TLIB、PRJ程序代替TLINK。

  3?在程序中调用initgraph()函数前,应加上如下语句:

  registerbgidriver(EGAVGA-driver);

  它通知连接程序把EGAVGA驱动程序装入用户的执行程序中,同样在装入字体文件之前要加上如下语句:

  registerbgifont(字体文件名);

  4?通过上述处理后,编译连接后的执行程序就可以在任何目录下运行了。这时,将屏幕初始化为图形模 式的函数可改写为:

  void InitGra(void)

  {int GD=DETECT,GM;

  registerbgidriver(EGAVGA_ driver);

  registerbgifont(triplex_ font);

  registerbgifont(small_ font);

  registerbgifont(sansserif_ font);

  registerbgifont(gothic_ font);

  initgraph(&GD,&GM,″″);

  }

  按照以上步骤,就能实现图形程序的独立运行,笔者在 Turbo C2.0、Borland C++2.0、Borland C+ +3.1下均运行通过。
kingofvc 2002-09-13
  • 打赏
  • 举报
回复
只要把bgi文件(*.bgi)拷贝到程序执行目录即可
pi1ot 2002-09-13
  • 打赏
  • 举报
回复
怎么都在学DOS下的玩意,怀旧嘛?
flyer_2001 2002-09-13
  • 打赏
  • 举报
回复
bgiobj evavga
tlib c:\tc2\lib\graphics.lib+egavga.obj


#include "graphics.h"
void main()
{
int gDriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver);
initgraph(&gDriver,gmode,"");
...
closegraph();
}


分...
ivox 2002-09-12
  • 打赏
  • 举报
回复
你没对图形进行初始化
#include"graphics.h"
main()
{
int driver,mode=0;
driver=DETECT;
initgraph(&driver,&mode,"");
.
.
.
closegraph();
}
如还有问题则可能是你的输出文件的所在文件夹中无EGAVGA.BGI文件,
你可以在tc目录中找到。
xvdp 2002-09-12
  • 打赏
  • 举报
回复
initgraph最后一个参数要把BGI的绝对路径写上才行,例如:f:\\bc31\\bgi\\
要注意是双\哦!
一、C语言自我YY1)、C语言是许多高级计算机语言的基础,学好C语言能更好的学习其他高级语言,为以后的学习打基础;往深学C语言的话那就是学到C在Linux里的应用,Linux十分强大。2)、C语言是一种计算机程序设计语言。具有高级语言的特点,又具有汇编语言的特点。C语言可作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。3)、应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。4)、C语言是面向过程语言,C语言通过windows/linux平台下编译的,是直接运行在windows/linux平台下的,而XX始终是运行在他的虚拟机之上的;所以理论上C语言能做一些相对于比较底层的工作,像XX就不能编写Windows病毒。5)、如果要利用编程来做一些windows优化工作的话,建议还是利用C语言。C语言是目前世界上流行、使用最广泛的高级程序设计语言6、很多编译器,几乎所有操作系统Windows,Linux,Unix的大部分代码都是C,C在背后做了很多东西的,也许开发游戏用C++,安卓用XX更为合适,图形界面的用其他语言开发效率更高一些(因为他们封装了很多东西),但同样的原因导致略微接近底层的功能其他语言根本干不了!Windows的API都是按照C语言的格式给的,这也很能说明问题!嵌入式开发更是离不了C语言!纵观电脑发展几十年,C语无所不能呀!

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧