注意:可通过此函数来显示英文信息,也可通过此函数来显示中文信息,同时还可以用它来显示中文与英文的混合信息!
程序源码:
#include<stdio.h>
#include<graphics.h>
/* 中英文混合输出函数,使用HZK16,ASC16文件,x,y为显示坐标,s为显示字符串,colour为颜色 */
void puts16(int x,int y,char *s,unsigned char colour){
register int i,j,k;
FILE *fpa,*fph;
char buffera[16],bufferh[32];
unsigned char qh,wh;
unsigned long location;
fpa=fopen("asc16","rb");
fph=fopen("hzk16","rb");
while(*s){
if(*s>0){
fseek(fpa,(*s)*16,0);
fread(buffera,1,16,fpa);
for(i=0;i<16;i++)
for(j=0;j<8;j++){
if(((buffera[i]>>(7-j))&0x1)!=NULL)
putpixel(j+x,i+y,colour);
}
s++;
x+=8;
}else{
qh=*s-0xa0;
wh=*(s+1)-0xa0;
location=(94*(qh-1)+(wh-1))*32L;
fseek(fph,location,SEEK_SET);
fread(bufferh,32,1,fph);
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if(((bufferh[i*2+j]>>(7-k))&0x1)!=NULL)
putpixel(x+8*j+k,y+i,colour);
s+=2;
x+=16;
}
}
fclose(fpa);
fclose(fph);
}
main(){
int gd=DETECT,gm;
initgraph(&gd,&gm,"")
getch();
closegraph();
}