汉显

本文介绍了一种使用C语言从指定汉字库中提取字模并在屏幕上显示汉字的方法。通过读取HZK16文件获取汉字的位图信息,并利用逐位判断的方式绘制汉字到指定位置。此外,还支持通过特殊字符实现换行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用C显汉字方法有很多。

这里用到了比较普遍的汉字库取字模显示汉字;

  1. int getbit(unsigned char c, int n)
  2. {
  3.     return((c>>n) & 1);
  4. }
  5. void outtextex(char *text, int x, int y, int color)
  6. {
  7.     FILE* fp;
  8.     int i, j;
  9.     int ox = x;
  10.     unsigned char ch, cl, buf[32];
  11.     long pos;
  12.     if((fp = fopen("HZK16""rb")) == NULL ) return;
  13.     while(*text != NULL)
  14.     {
  15.         if(*text == '#')
  16.         {
  17.             y += 16;
  18.             x = ox;
  19.             text ++;
  20.             continue;
  21.         }
  22.         ch = *text;
  23.         cl = *(text + 1);
  24.         pos = 32 * ((ch - 0xa1) * 94L + cl - 0xa1);
  25.         fseek(fp, pos, SEEK_SET);
  26.         fread(buf, 1, 32, fp);
  27.         for(i = 0; i<16; i++)
  28.             for(j = 0; j<8; j++)
  29.             {
  30.                 if(getbit(buf[2*i], 7-j))
  31.                 {
  32.                     putpixel(x+j, y+i, color);
  33.                 }
  34.                 if(getbit(buf[2*i+1], 7-j))
  35.                 {
  36.                     putpixel(x+j+8, y+i, color);
  37.                 }
  38.             }
  39.         text += 2;
  40.         x += 16;
  41.     }
  42.     fclose(fp);
  43. }

 

"#"号为分行作用!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值