| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1704 人关注过本帖
标题:【请教】汉字点阵显示出现乱码
只看楼主 加入收藏
hpf0511
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-9
收藏
 问题点数:0 回复次数:2 
【请教】汉字点阵显示出现乱码
刚刚开始学习,恳请大家的帮忙!这是在论坛里下的一个程序,运行后出现乱码,是为什么呢?
#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);
}
各位能帮我看看吗?还有能详细讲解下汉字到底是怎么显示的吗?对这个程序中循环这一段有些看不懂。谢谢!
搜索更多相关主题的帖子: 点阵 乱码 汉字 mat 
2008-03-25 19:21
jig
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
收藏
得分:0 
他的循环就是按位来判断现在该点是否要显示

如果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]]

个人网站 -  http://.h001.
2008-03-27 17:51
hpf0511
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-9
收藏
得分:0 
嗯,明白了,谢谢
2008-03-28 18:33
快速回复:【请教】汉字点阵显示出现乱码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051001 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved