欢迎来到天天文库
浏览记录
ID:8958639
大小:26.50 KB
页数:2页
时间:2018-04-13
《vb实现汉字点阵字模的提取》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、vb实现汉字点阵字模的提取对于HZK16字库里的16×16汉字(其实只用到了16×15,即16行15列,最后1列是空白的,但是作为GBK汉字,则使用了最后这一列)来说一共需要256个点来显示一个普通的汉字,那么共需要32个字节才能达到该目的。首先,一个GB2312汉字是由两个字节编码的,范围为A1A1~FEFE。A1-A9为符号区,B0到F7为汉字区。每一个区有94个字符(当然,这只是编码的许可范围,而不是这些编码都对应有字型,比如符号区就有很多编码空白区域)。所以,当接受到了一个汉字编码譬如“鹿”字,如何在HZK16文件中找到它对应的32个字节的字模数据呢。计算方法如下:C2
2、H-A1H=21H(33D区,因为汉字编码是从A1区开始的,所以文件最前面就是从A1区开始)B9H-A1H=18H(24D位,道理如上所述,这就是所谓的区位码)21H×5EH+18H=C36H(5EH就是94D,代表一个区有94个字符,C36H就是说这个字符在HZK16里是第C36H个)C36H×20H=186C0H(20H就是32D,代表一个字符占32个字节,这里得到的186C0H就是“鹿”字在HZK16文件中的偏移地址,从这里开始之后的32个字节就是我们要寻找的字符字模) Dimzw(1To128)AsBytePrivateSubCommand1_Click()IfLen(
3、Text1.Text)<>4ThenMsgBox"输入汉字不足四个!"Text1.Text=""ElseDimffAsStringff=CALL_LED(Text1.Text)ForI=1To128Step1'If(Imod8)=0ThenText2.Text=Text2.Text&"0"'EndIfText2.Text=Text2.Text&Hex(zw(I))&"H"NextIEndIfEndSubPrivateFunctionCALL_LED(ledstringAsString)Forj=1To4AA=Hex(Asc(Mid(ledstring,j,1)))bb=(94*
4、(CLng("&H"&Mid(AA,1,2))-&HA1)+(CLng("&H"&Mid(AA,3,2))-&HA1))*32ForI=1To32Step1Open"C:DocumentsandSettingsAdministrator桌面点阵HZK16"ForBinaryAs#1Get#1,bb+I,zw(32*(j-1)+I)Close#1NextINextjEndFunctionPrivateSubCommand2_Click()EndEndSubPrivateSubForm_Load()Text1.Text=""Text2.Text=""EndSub
此文档下载收益归作者所有