微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题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<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
  
  (成都 李亚冰)