众所周知,TC和BC这两个软件由于历史的原因,在中国的生命力出了奇的顽强,TC似乎是不少高校学生学C语言的首选,黑乎乎的运行界面,导致了好多人认为TC只能写出这种黑乎乎的程序,当然,TC和BC诞生在那个年代,写Windows程序确实困难(注意,是困难,并不是不可以),而且,即使不写Windows,写个窗口和图形的程序虽然有点麻烦,但也是完全可以的,在学生时代,每个用BC和TC的人可能都想写个图形程序,但成功的不多。
首先,刚才有人说没用过这个BC 3.1,先说一下这个工具的设置。
对于刚安装成功者,主要是四个路径的设置:
点Option--Directories之后出来的界面上,有四个路径,其中Include是h文件的所在地,一般就是安装后的目录下的include文件夹;lib是库文件,其中包含着很多函数的实现过程,也是十分重要的,一般设定为安装目录下的lib文件夹;source是源文件,就是自己集中存放源文件的位置;output是输出文件设置,就是默认的某个程序编译之后,生成的obj文件和exe文件所在地。
由于BC和TC界面十分相似,操作我就不多说了
下边,先简单说明一下BC对图形程序的处理概念,然后说说如何设置,为图形程序服务,再用一个Line函数,实现一个线段。
图形程序,首先涉及的问题就是显卡的驱动,大家都知道,即使是Windows,安装之后,往往还要单独安装显卡驱动,所以,在BC下,这个问题有单独的处理方法:
凡是安好BC的,在BC的那个文件夹下会看到一个BGI文件夹,其中有很多CHR与BGI文件,这个就是咱们用BC做图形程序的根本。
实际上BGI就是BC和显卡之间的一个接口,BGI文件就是BC的图形驱动,由于年代久远,且考虑到通用性,所以这些BGI文件不可能十分充分的发挥显卡的功能,只能在一个中等的层次上去画图,这个文件夹里的ATT、CGI、EGAVGA这些bgi文件都是。
操作方法如下:
打开BC3.1,因为图形程序的链接需要一个设置,在Option-Linker-Library中有个选项Graphics lib这个选项前边大家先选定,注意,BC的选定是个X,默认的是不选的,做图形程序这个一定要选上,好,再说下一步,刚才在BGI文件夹中,大家看到了一个exe文件,“BGIOBJ.exe”它的作用就是把BC的图形驱动转换为lib文件,然后添加到graphics.lib中
使用方法是,启动命令行,用cd命令,转到BC所在的目录,用cd BGI,转到BGI文件夹,然后,输入BGIOBJ EGAVGA,输入这个命令的作用就是把EGA,VGA这两种的驱动文件转换为了一个egavga.obj文件,这个文件先放着, Windows下打开BC/Lib文件夹, 在这个文件夹下会发现一个Tlib的可执行文件,这个文件的作用就是对lib文件和obj文件进行连接,把Tlib这个可执行文件复制到BC/Lib文件夹下,先放着,然后回到咱们刚才那个BC/BGI文件夹下,把egavga.obj文件找到,复制到BC/Lib文件夹下,好了,三方大会师,下边就是至关重要的一步,命令行下,用cd命令转到Lib这个文件夹,然后输入Tlib graphics.lib+egavga.obj,就生成了一个新的graphics.lib文件,这个文件就保证了在调用graphics.h文件中的画图函数以EGA或VGA的显示模式画图的时候可以正常显示,以上是对BC进行了基本的设置
下边就说程序中的方法:
用某文本编辑器或直接在BC中开始写
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
}
首先,大家写下上述内容,第一个就是图形函数所在的文件,后两个略,在好多书上,往往会看到这样一段示例程序:
int main()
{
//初始化图形程序设置
int gdriver =DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "");
cleardevice(); //清空屏幕
//图形错误处理
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s/n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getchar();
exit(1);
}
setcolor(BLUE);
line(20,50,200,400);
getchar();
return 0;
}
大家谁有兴趣,可以先试试这个程序是否可以运行,估计大家会看到一条经典错误“BGI Error: Graphics not initialized (use 'initgraph')” ,实际上,仔细看有关文档,往往会发现一段话,意思是说,Turbo C对于用initgraph()函数直接进行的图形初始化程序, 在编译和链接时并没有将相应的驱动程序(*.BGI)装入到执行程序, 当程序进行到intitgraph()语句时, 再从该函数中第三个形式参数char *path中所规定的路径中去找相应的驱动程序(上边的说法TC换成BC也是一样的,但在VC是没有<graphics.h>的,<graphics.h>是BC和TC特有的,VC下,画图程序的方式整个变了)。