注意:不能通过此函数来显示英文信息,更不能通过此函数来达到中英文的混合显示!
程序源码:
#include<stdio.h>
#include<graphics.h>
/* 显示16*16点阵汉字函数,使用HZK16文件,x,y为显示坐标,s为显示字符串,colour为颜色 */
void hanzi16(int x,int y,char *s,int colour){
FILE *fp;
char buffer[32];
register i,j,k;
unsigned char qh,wh;
unsigned long location;
if((fp=fopen("hzk16","rb"))==NULL) {
printf("Can't open hzk16!");
getch();
exit(0);
}
while(*s) {
qh=*s-0xa0;
wh=*(s+1)-0xa0;
location=(94*(qh-1)+(wh-1))*32L;
fseek(fp,location,SEEK_SET);
fread(buffer,32,1,fp);
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if(((buffer[i*2+j]>>(7-k))&0x1)!=NULL)
putpixel(x+8*j+k,y+i,colour);
s+=2;
x+=16;
}
fclose(fp);
}
main(){
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
hanzi16(226,200,"威龙网C语言显示汉字实例!",LIGHTBLUE);
getch();
closegraph();
}