Programming 版 (精华区)

发信人: valley (天音), 信区: Programming
标  题: tc显示汉字程序
发信站: 哈工大紫丁香 (2003年09月01日19:52:51 星期一), 站内信件

首先你需要一个汉字字模的文件,UCDOS中就有各种字体和大小的文件

然后根据汉字内码找到字模,一个点一个点地画出来.代码如下

每个汉字占两个字节,分别为High 和 low,或区码 加 位码
国标规定,汉字共有94个区,每区94个汉字,前边有十四个区(或许是这个数)是数字
和符号等.共6375个字.

#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>

#define HZROW  16   /* 16x16点阵汉字*/
#define HZCOL  16
#define HZSIZE 32

int main(void)
{
 FILE *fp,*fpin,*fpout;
 int i,j,k,m,bitold,bitnew;
 int driver=VGA,mode=VGAHI;
 char data[HZSIZE];
 int dots[HZCOL][HZROW];
 long address;
 long high,low;
 int count;

 fp=fopen("hzk16.bin","rb");  /*字模文件*/
 fpin=fopen("text.txt","rb"); /*要显示的汉字,国标码*/
 fpout=fopen("hzcode.txt","w"); /*把点阵信息输出保存*/
 if(fp==NULL) printf("error open file");
 if(fpin==NULL) printf("error open file");
 initgraph(&driver,&mode,"");
 count=0;
 cleardevice();
 while(!feof(fpin))
 {
  high=fgetc(fpin);
  low=fgetc(fpin);
  if(high=='\n' || low=='\n')
  {
    high=fgetc(fpin);
    low=fgetc(fpin);
  }
  address=((high-0xa1)*94+low-0xa1)*HZSIZE; /*计算公式*/
  fseek(fp,address,SEEK_SET);
  for(i=0;i<HZSIZE;i++) data[i]=fgetc(fp);
  for(i=0;i<HZROW;i++)
  for(j=0;j<HZCOL;j++)
   {
    bitold=0;
    for(k=(HZSIZE-1);k>=0;k--)
     { bitnew=(data[k]>>7)&1;
       data[k]=data[k]<<1;
       data[k]|=bitold;
       bitold=bitnew;
      }
     k=dots[j][i];
     dots[j][i]=k<<1;
     dots[j][i]=bitnew;
     if(bitnew)  putpixel(50+count*20+j,100+i,WHITE);
    } /* j,i */
   for(i=0;i<HZROW;i++)
   {
    fprintf(fpout,";----------\n");
    fprintf(fpout,"DB ");
    for(j=0;j<HZCOL;j++)
     fprintf(fpout,"%d ",dots[i][j]);
    fprintf(fpout,"\n\n");
   }
  count++;
 }
 getch();
 closegraph();
 fcloseall();
 return 0;
}

【 在 wplxb (小兵) 的大作中提到: 】
: 如题


--
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                    ┃
┃ TARGET LOCKED! MISSILE LAUNCHED! TARGET DESTROYED! ┃
┃                                                    ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛
对不起,您所呼叫的爱情已关机或不在服务区内,请稍候再播。

※ 修改:·SwordLea 于 Jun 12 09:39:52 修改本文·[FROM: 202.118.246.241]
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.250.183]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.575毫秒