您的位置:首页 > 其它

图形模式下字符的显示

2010-09-22 14:52 393 查看
在图形模式下输出字符

由于图形模式是对像素操作,要输出字符只能是在屏幕上画出字符的形状,所以常用的办法是对

已生成的字库进行读取并相应的输出,因为在字库在已把相应字符的描述其形状的信息用二进制

数据保存好,我们只需读出此数据并按对应的点显示就可以了,比如:下面的一个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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: