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

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在看厌了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文件放在同一目录下即可。(注:两个hzk文件都分别在TC256的压缩包里能找到)。

(未完待续)

作者:陈凯

2004.7.10

版权所有、不得转载

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航