现在的位置: 首页 > 综合 > 正文

图形模式下字符的显示

2018年01月22日 ⁄ 综合 ⁄ 共 1113字 ⁄ 字号 评论关闭

在图形模式下输出字符
由于图形模式是对像素操作,要输出字符只能是在屏幕上画出字符的形状,所以常用的办法是对
已生成的字库进行读取并相应的输出,因为在字库在已把相应字符的描述其形状的信息用二进制
数据保存好,我们只需读出此数据并按对应的点显示就可以了,比如:下面的一个8*16的ASC字库
它将一个ASCII字符用16个字节保存,每8位表示一行,共16行,每个字符信息在字库中位置就是
它的ASCII码值*16就可以找到了,比如说字符0的ASCII值为30H,那么在字库300H的地方存放的就是
字符0的形状信息,读出其值为:00 00 38 6C C6 C6 D6 D6 C6 C6 6C 38 00 00 00 00
相应的二进制信息为:
00000000
00000000
00111000
01101100
11000110
11000110
11010110
11010110
11000110
11000110
01101100
00111000
00000000
00000000
00000000
00000000
上面的1组成了一个0的形状,对应的1位置在屏幕上点亮就显示出0
汉字的显示和字符显示原理相同,只不过汉字每行就用两个字节,也就是16位来表示,在标准中
都是用区位码来表示汉字的,根据区位码计算该字的形状信息存储位置的过程为
OFFSET=(94*(区号-1)+位号-1)*32,这里说的是16*16点阵字库,如“大”字的区位码为2083,
那么它在字库中的位置为(94*(20-1)+(83-1))*32=59776,即E980H,其信息如下:
01 00 01 00 01 00 01 00 01 04 FF FE 01 00 02 80 02 80 02 40 04 40 04 20 08 10 10 0E 60 04
00 00
其二进制表示如下:
0000000100000000
0000000100000000
0000000100000000
0000000100000000
0000000100000100
1111111111111110
0000000100000000
0000001010000000
0000001010000000
0000001001000000
0000010001000000
0000010000100000
0000100000010000
0001000000001110
0110000000000100
0000000000000000
0000000000000000
那么又怎样获得汉字的区位码呢,在UltraEdit中输入汉字,然后用十六进制显示的就是他的内码,
比如“大”的内码为0B4F3H ,那么他的区位码为区号0B4H-0A0H=14H,即20,位号为0F3H-0A0H=53H
即83,所以它的区位码为2083

抱歉!评论已关闭.