⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddsd.cpp

📁 用点阵输出汉字
💻 CPP
字号:
#include <iostream.h>
void printCHN16(int xCoor,int yCoor,int color,int distanceHZK16,char *chinese)
/*xCoor,yCoor指出汉字显示的位置,color显示的颜色,distanceHZK16为两个相邻的汉字之间的距离,
  chinese是要显示的汉字*/
{
 long filePosition;   /*存放一个汉字在汉字库中的位置*/
 int i,j,k;
 int pointX=xCoor,pointY=yCoor;  /*给出扫描点的输出位置*/
 char tempChar;
 int tempBit;
 FILE *pointHZK16=fopen("HZK16","rb"); /*打开16X16点阵汉字库*/
 while(*chinese)/*遍历所有需要显示的汉字*/
 {
  if((*chinese) & 0x80)  /*判断是否是汉字*/
  {
      /*获得某汉字在字库中的字模位置*/
   filePosition=(long)((*chinese+95)*94+(*(chinese+1)+95))*32;
      /*将文件位置指针指向字模的首地址*/
   fseek(pointHZK16,filePosition,0);
      /*由于16X16点阵中有16行*/
   for(i=0;i<16;i++)
   {   /*每一行有两个字节*/
    for(j=0;j<2;j++)
    {  /*得到一个字节*/
     tempChar=fgetc(pointHZK16);
     tempBit=0x80;/*用来测试字节的位*/
     for(k=0;k<8;k++)
     {
      if(tempBit & tempChar)
      /*作"与"位操作,如果是1,就在这个位置上画点*/
       putpixel(pointX+k,pointY,color);
      tempBit=tempBit>>1;/*测试下一个位*/
     }
     pointX+=8;/*下一个字节的输出位置*/
    }
    pointY++; /*下一行的输出位置*/
    pointX-=16;
   }
   pointY=yCoor;  /*下一个汉字的输出位置*/
   pointX+=16+distanceHZK16;
   chinese+=2;  /*由于汉字的储存只占二个字节空间*/
  }
  else/*不是汉字*/
   chinese++;  /*由于非汉字的储存只占一个字节空间*/
 }
 fclose(pointHZK16);
 return ;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -