翻译:ShiningRay
在QBASIC中使用BSAVE和BLOAD
a tutorial by Mallard
Revision 2 - 7/5/1997
******CODE FROM THIS TUTORIAL IS IN GRAPHICS2.ZIP******
[注意 - 这篇指导假设你已经读过我的第一篇图像指导]
taken from The QBasic Page at http://qbasic.com
------------
[内容目录]
(1) BSAVE和BLOAD是什么?
(2) 在EGA/VGA中制作很棒的图像
------------
[BSAVE和BLOAD是什么?]
BSAVE和BLOAD是QBasic语言中的两个内部函数,可以用来保存用我在上一讲中
所提到的方法所建立的图形到一个文件中。然后这个文件可以被一个程序迅速调用,
减少了间隔的时间。
这两个命令吧内存的一部分包存为一个文件 - 他们不仅仅可以用来保存图形。
这篇指导主要针对图形。要将BSAVE和BLOAD指向开始存储的正确的内存地址,你必
需使用DEF SEG语句,像这种形式:
DEF SEG = VARSEG(arrayname(0))
arrayname是你用GET函数存储的图形数组的名称。当你完成了BSAVE或BLOAD后,
再用DEF SEG命令来将内存指回他原来应该指的地方。
BSAVE是你将在这篇指导中学到的下个指令。它的基本句法是:
BSAVE "graphic.ext", offset, length
"graphic.ext"是你向储存的图形文件的名称。你可以用任何文件名和扩展名,
为了清楚些,我在我的程序中使用了.GFX的扩展名。
length是你声明的用GET命令储存图形的数组的大小。确定你得到了准确的数字。
实际的文件会比你在这里指定的大小要大七个字节。
offset是开始储存的偏移地址。根据这篇指导的目的,offset会一直是零。你
可以巧妙的利用这些命令来在一个文件中储存更多的图形,不过我大概会在另一篇
指导中解释这个。
现在,继续BLOAD命令。假设你已经建立并用BSAVE保存了一个图形,那么现在
是用BLOAD调入图形的时候了。这实在是简单,真的:
DIM arrayname(length)
SCREEN screenmode
DEF SEG = VARSEG(arrayname(0))
BLOAD "graphic.ext", 0
DEF SEG
PUT (0, 0), arrayname
当然,你需要粘贴你的arrayname和length到这个程序中,还有这个文件的名称。
我已经通过一个例子来联系这个指导,BSAVE.BAS,在这里面我成功的用BSAVE和
BLOAD储存和调用一个行星图片。在我们继续下一部分之前,看一下他并做些试验。
确定使用了相同屏幕模式当你用BSAVE或BLOAD操作时。例如,如果你用BSAVE在
模式7中储存的一个图形,你必须在模式7中用BLOAD调入图形。
-----------
[在EGA/VGA中制作很棒的图像]
你在EGA模式中制作好的图形的最好想法只是用我上次讲的技巧练习一下而已。
VGA模式的图形可以用不同的方法来制作,可以得到更好的结果。
对于VGA图形,最好在绘图程序中建立子图形(例如,CorelDRAW!或Autodesk
Animator)并且把他们存为.GIF文件。调用.GIF的代码已经附带在这个指导中,用
它在QBasic来调用.GIF文件,然后用GET调入一个数组并用BSAVE存为QBasic的格式。
一个例子已经附带在这个指导中了。
-----------
上面的代码可以任你修改。如果你需要更多的关于这篇文章里讲述的图形使用
技巧的帮助,请随意E-MAIL Mallard--mallard@gcomm.com或者访问QBasic主页
http://www.wp.com/80948/qb/
[文档结束]



0 Comments