DBASEⅢ的图形功能 成都 李亚冰 1994-07-29 一、未公布的命令和函数 ①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