谈谈TC256图形函数库的使用方法

来源:互联网 发布:python读取word文档 编辑:程序博客网 时间:2024/05/01 09:43

Turbo C 2.0是Borland公司开发的一个16位DOS的C编译器。现在Turbo C已经是老古董了,用的人也很少了。但是研究DOS和Turbo C的人还是有。VGA/VESA的256色的编程一直是研究DOS和TC编程的人关注的焦点,本文所讲的TC256图形函数库是吴进写的一个支持SVGA256色视频模式的图形函数库。许多初学者都不懂其使用方法,本文就在这里简单讲讲。

    在看厌了TC编的命令行程序后,愈发觉得不爽,于是急切的想做一点TC的图形编程。TC自带的graphics库是一个不错的选择,但也有缺憾,只能支持到VGAHI图形模式,即640*480*16色,对图像的表现力真的太差。

    还好在网上找到了一套功能较为完善的TC256图形函数库,它支持SVGA的640*480*256色的视频模式,支持汉字的输出、鼠标功能、256色位图输出、EMS内存管理、基本绘图函数、图像特效(动画、Alpha混合)等全面而强大的功能。本文不打算详细探讨该库的每一个函数的使用,而只具体讲讲该函数库的使用、编译方法和编程及编译时常遇到的问题。

    使用方法。安装很简单,所有的函数都以源代码形式放在include目录下的.h文件中,只要将所有.h文件复制到您的TC的include目录下即可。一般这一步都没问题。

    在编程时,需#include<all256.h>,将包含所有的TC256函数库功能。

    通常使用该函数库的程序都采用以下框架:
    #include<all256.h>
    int main(void)
    {
        init256(SINGLE_SURFACE);
        vpost();
        close256();
        return 0;
    }

    我们可以将所有的图形操作和您的程序代码插入到init256();与close256();两句之间,这也是属于成对编码的规范(关于成对编码请参看本站的《成对编码规范》一文)。

    关于编译问题。由于TC256库使用了EMS内存,而且要求使用Compact以上的内存模式进行编译,所以要在TC的Options->Compile->Model中改内存模式,一般改为Huge即可。改完后还别忘记保存(Options->Save Options)。保存后即可进行编译,一般编译通过后即可运行。但是在Windows操作系统下可能会出现没有安装EMS内存驱动而无法运行的问题(双击后,一般症状是程序运行一闪而过)。在WinXP下的解决方法是右键单击您编译生成的程序,选“属性”项,在弹出对话框中选“内存”选项卡,将EMS内存设为最大(默认为无,选择下拉列表中最下面一个即可),设置完后点击确定,此时会在同一目录下生成一个指向该程序的MS-DOS快捷方式,千万不要觉得它不顺眼而把它删掉了,你的程序的正常运行全靠它了。此刻再双击你的程序,即可正常运行了。在Windows2000下好像不行,尽管可以像上面一样的进行设置,可是设置以后的程序就是无法运行,听说可以装一个什么软件的,不过到现在本人还是没搞定Win2000的问题,以后再研究吧。在Win95/98下,程序应该都能够正常运行的。

    在编写程序时常会犯的错误。用过TC256库的人都应该知道puts256()这个函数,它就是在屏幕上输出一个中文字符串,看一下代码:
    #include<all256.h>
    int main(void)
    {
        init256(SINGLE_SURFACE);
        puts256(10,10,"你好TC256!",YELLOW);
        getch();
        close256();
    }

    以上程序是编译能通过,可运行,可是却没有我们想要的效果,刚开始本人研究TC256库的时候就犯了这样的错误,明明用了puts256()这个函数,可是屏幕上就是没有字显示出来。就在我打算放弃的时候,才偶然在演示程序中发现了vpost()这个神秘的函数。在init256()时,我们传了SINGLE_SURFACE这个常量,就是将TC256系统初始化为单页面模式,相当于常说的双缓冲。我们所有的操作结果是不会立即反映到屏幕上的。刚才的puts256()的操作结果只是存放在了一个由TC256系统维护的缓冲区中,而vpost()的作用及时将缓冲区中的内容送入到显存里去,在vpost()之后,我们就能看到操作结果了。而使用缓冲和vpost()的意义在于提高TC256的图形性能和消除绘制图形时的闪烁。因此,正确的代码应该如下:
    #include<all256.h>
    int main()
    {
        init256(SINGLE_SURFACE);
        puts256(10,10,"我好激动,我终于会用TC256函数库了!",YELLOW);
        vpost();
        getch();
        close256();
    }

    另外,可能犯的错误是,汉字的输出要用到两个点阵字库,分别是hzk16和hzk24,如果你的程序找不到这两个文件,汉字的输出也会失败,通常在发布您的程序时,只要将你的程序和两个hzk文件放在同一目录下即可。

(未完待续)

原创粉丝点击