【请教】汉字点阵显示出现乱码
刚刚开始学习,恳请大家的帮忙!这是在论坛里下的一个程序,运行后出现乱码,是为什么呢?#include "graphics.h"
#include "stdio.h"
main()
{ int i=VGA,j=VGAHI,k;
unsigned char mat[16][2],chinease[3]="我";
FILE *HZK;
if((HZK=fopen("hzk16","rb"))==NULL)exit(0);
initgraph(&i,&j,"");
i=chinease[0]-0xa0;j=chinease[1]-0xa0; /*获得区码与位码*/
fseek(HZK,(94*(i-1)+(j-1))*32,SEEK_SET);
fread(mat,32,1,HZK);
for(j=0;j<16;j++)
for(i=0;i<2;i++)
for(k=0;k<8;k++)
if(mat[j][i]&(0x80>>k)) /*测试为1的位则显示*/
putpixel(i*8+k,j,WHITE);
getch();
closegraph();
fclose(HZK);
}
各位能帮我看看吗?还有能详细讲解下汉字到底是怎么显示的吗?对这个程序中循环这一段有些看不懂。谢谢!
如果12X12点阵的汉字,他是怎么工作呢。其实很简单,一行有12个点,我们用位来表示此点是否要画,那布局就是这样
比如:1 字
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 一行有12个点,所以要用两个字节来表示,所以最右边4位不用。
.
.从上到下总共12行
.
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
其实那个循环就是在判断哪些位为1,是1的就绘制,这样一个汉字就显示出来了。看到上面那个方阵
明白为什么汉字库叫“点阵”了吧?
所以对于一个12点阵汉字,就是 2字节 X 12行 = 24字节
那16点阵 2字节 X 16行 = 32字节
24点阵 3字节 X 24行 = 72字节
。。。。。。
不知道我说的明不明白。
[[it] 本帖最后由 jig 于 2008-3-27 17:58 编辑 [/it]] 嗯,明白了,谢谢
页:
[1]
