您的位置:首页 > 编程语言

TC图像编程-汉字串显示【原创】

2008-03-26 23:44 169 查看
TC图像编程-汉字串显示【原创】
2008/03/09 14:36
/*我把这代码贴出来是学习之用,所以一些说明我也就懒得讲了*/

/*********************************
作者:HungryAnt
姓名:孙麟
E-mail:ljsunlin@126.com
QQ:517377100
blog:http://hi.baidu.com/zhongji/blog
*********************************/

#include<stdio.h>
#include<graphics.h>

/*+++++++++++++++++++++++++++汉字串显示+++++++++++++++++++++++++++++++++++++*/
FILE *zh;
int zh_print16(int x,int y,char *pix,int color){/*显示16点阵汉字*/
int i,j,k;
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++){
if(pix[i*2+j] & 0x80>>k)putpixel(x+j*8+k,y+i,color);
/*else putpixel(x+j*8+k,y+i,BLUE);*/
}
}
void zh_str(int x,int y,int width,unsigned char *str,int color){/*汉字和英文字串显示,width表示每一行的汉字数*/
int i=0,j=0;
long qm,wm,address;
unsigned char pix[32];/*存放点阵16*16==32*8*/

while(str[i]){
qm=(long)str[i]-0xA0;/*区码*/
i++;
wm=(long)str[i]-0xA0;/*位码*/
i++;

address=((qm-1)*94+(wm-1))*32;/*获取汉字在文件中的位置*/

fseek(zh,address,SEEK_SET);/*文件中偏移位置*/
fread(pix,32,1,zh);/*读取点阵32*8=16*16*/
zh_print16(x,y,pix,color);

x+=16;
j++;
if(j==width){
y+=16;
x-=width*16;
j=0;
}

}
}
void ha_graph(){/*自定义图形检测*/
int gdriver = DETECT, gmode, errorcode;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode,"");
errorcode = graphresult();
if (errorcode != grOk){
printf("Graphics error: %s", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
}
/*-----------------------------------------------------------------------*/

int main(){
unsigned char str[]="哈哈,我是孙麟。我晕啊";/*unsigned很重要,不加即错*/
zh=fopen("HZK16","r");/*读汉字库*/
ha_graph();
zh_str(20,20,10,str,YELLOW);
getch();
fclose(zh);
closegraph();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: