#include<stdio.h>
#include<graphics.h>
FILE *fp;
/*******************************************************/
/* 函数功能:读取汉字字模 */
/* 输入参数:incode[]--汉字 */
/* 函数输出:bytes[]--字模 */
/*******************************************************/
void get_hzm(char incode[ ],char bytes[ ])
{
unsigned char qh,wh;
unsigned long offset;
qh = incode[0] - 0xa0; /*得到区号*/
wh =incode[1]- 0xa0; /*得到位号*/
offset = ( 94 * (qh-1)+(wh-1))*32L; /*得到偏移位置*/
fseek(fp, offset, SEEK_SET); /*定位字模首字节*/
fread(bytes , 1, 32 , fp);
}
/*******************************************************/
/* 函数功能:显示字模 */
/* 输入参数:左上角坐标,颜色和字模 */
/* 函数输出:无 */
/*******************************************************/
void disp_hzm(int x,int y,int color,char buf[ ])
{
int i,j,k;
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if(buf[i*2+j]>>(7-k)&1)
putpixel(x+j*8+k,y+i,color);
}
void DisHz16X16(int x,int y,int width,int color,char *str)
{ /* width笔的粗细*/
unsigned char buf[35];
while(*str)
{
if((*str&0x80) && (*(str+1)&0x80))
{
/*判别是否是汉字,即最高位是否为1*/
get_hzm(str,buf);
disp_hzm( x, y, color, buf);
x+=(16+width);
str+= 2; /*显示下一汉字*/
}
}
}