DBASEⅢ的图形功能
①SET SEGMENT TO〈段地址〉
其功能是定义系统分配给屏幕缓冲区内存的段地址,地址随显示卡的类型而不同,CGA卡的段地址为47104(B800H),EGA/VGA的段地址为40960(A000H)。
②POKE〈屏幕地址〉,〈数据〉
将数据写入指定的屏幕地址。
③〈屏幕地址〉
读取指定屏幕地址的数据。
其中段地址、屏幕地址和数据均为十进制。
二、屏幕地址的分析
在CGA显示器图形方式下,分辨率为640×200,段地址为47104。写入屏幕的图象就由数据1_256决定。整个屏幕显示分为1_4个逻辑行,第一逻辑行的地址为0_7999,第二行的地址为8192_16191,第三行的地址为16384_24383,第四行的地址为24576_32575,四个逻辑行可控制整个屏幕。物理行水平640个点分为80个图形单位其第一行的屏幕地址为0_80,第二行的屏幕地址为8192_8271,第三行为16384_16463,第四行为24567_32575,而第五行实际上是第一逻辑行的延续,其地址为80_159,所以,以此类推,可得知整个屏幕中地址与图象位置的关系。
在VGA彩色显示卡的图形方式下,情况就十分简单,其段地址为40960,整个屏幕只有一个物理行,其地址为80_298144,每行80个图象单位,整个图像的面积可覆盖26行汉字系统的提示行以上的全部区域,甚至如果增大图象地址的值,图像单位可覆盖提示行。
三、DBASEⅢ图形功能的应用
以上已经简单说明了DBASEⅢ的图形功能,以下可运用此功能来作图,我们可以编一个命令文件直接从数据库中读取数据,绘制精确的直方图。
此程序为CGA模式下的作图程序,先建立一个文件名为CZ.DBF的数据库,其结构很简单,只有年份和产值两项,程序清单如下。本程序在IBM PC,386机上运行通过。
SET TALK OFF
CLEA
SET SEGMENT TO 47014 &&设置CGA的段地址
N=6495
M=0
DO WHILE M<50
STOR "POKE"+STR(N)+",128" TO P1 &&写一逻辑行
STOR "POKE"+STR(N+8192)+",128" TO P2 &&写二逻辑行
STOR "POKE"+STR(N+16384)+",128" TO P3 &&写三逻辑行
STOR "POKE"+STR(N+24576)+",128" TO P4 &&写四逻辑行
N=N-80 &&"128"为一点
M=M+1
&P1
&P2
&P3
&P4
ENDDO
L=6495
DO WHILE L<6535
STOR "POKE"+STR(L+24576)+",255" TO P5 &&画一水平线
&P5
L=L+1
ENDD
@ 1,24 SAY "各年产值直方图"
@ 5,13 SAY"产值"
USE CZ
GO TOP
DO WHILE .NOT. EOF()
X=0
Y=6495+RECNO()*7
@ 5,21+(RECNO()-1)*7 SAY 年份
@ 9,21+(RECNO()-1)*7 SAY 产值
STOR 产值 TO C
DO WHILE X<C
STOR "POKE"+STR(Y)+",255" TO P6
STOR "POKE"+STR(Y+8192)+",255" TO P7
STOR "POKE"+STR(Y+16384)+",255" TO P8
STOR "POKE"+STR(Y+24576)+",255" TO P9
Y=Y-80
X=X+1
&P6
&P7
&P8
&P9
ENDDO
SKIP
ENDD
RETU
(成都 李亚冰)