📄 showchinense.c
字号:
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "graphics.h"
void WriteHzStr();
void WriteHz(unsigned char,unsigned char,int,int);
void GetHzBit(unsigned char,unsigned char);
char *s="中华人民共和国";
FILE *fp;
long int fpos; /*具体汉字在字库中的偏移量*/
char bitdata[32]; /*存储汉字字模*/
main()
{
int gdrive=DETECT,gmode;
initgraph(&gdrive,&gmode,""); /*加载图形模式*/
if((fp=fopen("c:\\hzk16","rb"))==NULL) /*打开16*16点阵汉字字库*/
{
printf("cannot open file\n");
exit(0);
}
WriteHzStr();
fclose(fp);
closegraph();
getch();
}
void WriteHzStr()
{
int num,i,x,y;
num=strlen(s); /*获取字符串长度*/
x=0,y=0;
for(i=0;i<num;i+=2) /*每次读两个字节*/
{
WriteHz(s[i],s[i+1],x,y);
x+=16;
if(x>=640) {y+=16;x=0;}
}
}
void WriteHz(unsigned char left,unsigned char right,int x,int y)
{
unsigned char bit[8]={128,64,32,16,8,4,2,1};
int i,j;
GetHzBit(left,right);
for(i=0;i<16;i++)
for(j=0;j<8;j++) /*和bit[]与操作以后,在屏幕上画点*/
{
if(bitdata[2*i]&bit[j]) putpixel(x+j,i+y,YELLOW);
if(bitdata[2*i+1]&bit[j]) putpixel(x+8+j,i+y,YELLOW);
}
}
void GetHzBit(unsigned char left,unsigned char right)
{
fpos=32L*((left-161)*94+(right-161)); /*获得字模在字库中的位置*/
fseek(fp,fpos,SEEK_SET);
fread(bitdata,32,1,fp); /*把该汉字字模读入到bitdata中*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -