21,458
社区成员
发帖
与我相关
我的任务
分享
initgraph(&gd,&gm,"E:\\Tools\\ptools\\tc\\bgi"); /*这里是我的tc安装路径中的bgi目录*/
/* hanzi.c */
#include <graphics.h>
#include <stdio.h>
#define ROW 1
#define COL 2
int main(void)
{
int x,y;
char *s="文字显示示例,这是一行文字。";/*汉字中不能夹杂英文*/
FILE *fp;
char buffer[32];
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm=0;
initgraph(&gd,&gm,"E:\\Tools\\ptools\\tc\\bgi"); /*这里是我的tc安装路径中的bgi目录*/
if ((fp=fopen("hzk16","rb"))==NULL) /* put this file to your project directory */
{
printf("Can't open hzk16,Please add it");
getch();
closegraph();
exit(1); /*好处?*/
}
x=20; y=100;
while(*s)
{
qh=*(s)-0xa0;
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L; /*16*16点阵*/
fseek(fp,offset,SEEK_SET);/*在字库文件中定位当前位置*/
fread(buffer,32,1,fp); /*从当前位置读取数据*/
for (i=0;i <16;i++) /*16行*/
for(n=0;n <ROW;n++)
for(j=0;j <2;j++) /*每行2个字节*/
for(k=0;k <8;k++) /*每个字节8位*/
for(m=0;m <COL;m++)
if(((buffer[i*2+j]>>(7-k))&0x1)!=NULL) /*i=0,j=0,k=0*/
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);/*32*16显示,横向拉长一倍*/
s+=2; x+=32;
}
getch();
closegraph();
return 0;
}