QQ群讲义3--BC3.1的图形学设置及两个经典图形学算法

本文介绍了在BC3.1中如何配置图形环境,包括设置路径和图形库,以及如何处理图形驱动。此外,还详细讲解了如何通过DDA算法和Cohen-Sutherland算法实现直线画图和裁剪。BC3.1虽然年代久远,但通过注册图形驱动和设置图形库,仍能编写和运行图形程序。
摘要由CSDN通过智能技术生成

众所周知,TCBC这两个软件由于历史的原因,在中国的生命力出了奇的顽强,TC似乎是不少高校学生学C语言的首选,黑乎乎的运行界面,导致了好多人认为TC只能写出这种黑乎乎的程序,当然,TCBC诞生在那个年代,写Windows程序确实困难(注意,是困难,并不是不可以),而且,即使不写Windows,写个窗口和图形的程序虽然有点麻烦,但也是完全可以的,在学生时代,每个用BCTC的人可能都想写个图形程序,但成功的不多。

 

首先,刚才有人说没用过这个BC 3.1,先说一下这个工具的设置

 

对于刚安装成功者,主要是四个路径的设置:

Option--Directories之后出来的界面上,有四个路径,其中Includeh文件的所在地,一般就是安装后的目录下的include文件夹;lib是库文件,其中包含着很多函数的实现过程,也是十分重要的,一般设定为安装目录下的lib文件夹;source是源文件,就是自己集中存放源文件的位置;output是输出文件设置,就是默认的某个程序编译之后,生成的obj文件和exe文件所在地。

由于BCTC界面十分相似,操作我就不多说了

下边,先简单说明一下BC对图形程序的处理概念,然后说说如何设置,为图形程序服务,再用一个Line函数,实现一个线段。

 

图形程序,首先涉及的问题就是显卡的驱动,大家都知道,即使是Windows,安装之后,往往还要单独安装显卡驱动,所以,在BC下,这个问题有单独的处理方法:

凡是安好BC的,在BC的那个文件夹下会看到一个BGI文件夹,其中有很多CHR与BGI文件,这个就是咱们用BC做图形程序的根本。


实际上BGI就是BC和显卡之间的一个接口,BGI文件就是BC的图形驱动,由于年代久远,且考虑到通用性,所以这些BGI文件不可能十分充分的发挥显卡的功能,只能在一个中等的层次上去画图,这个文件夹里的ATTCGIEGAVGA这些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,输入这个命令的作用就是把EGAVGA这两种的驱动文件转换为了一个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文件中的画图函数以EGAVGA的显示模式画图的时候可以正常显示,以上是对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>BCTC特有的,VC下,画图程序的方式整个变了)。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值