#include "graphics.h"
#include "stdio.h"
void huadian(char *hz,int x,int y,int ys)/*根据字模画点函数*/
{
int i,j,k;
for (i=0;i<16;i++)
for (j=0;j<2;j++)
for (k=0;k<8;k++)
if (hz[i*2+j]&(0x80>>k))
putpixel(x+k+j*8,y+i,ys);
}
int main()
{
int dm=VGA,gm=VGAHI;
double i,j; /*我的问题在这里*/
unsigned char zk[32],hzbuff[3]="情";
FILE *fp;
initgraph(&dm,&gm,"");
i=hzbuff[0]-0xA0,j=hzbuff[1]-0xA0;/*内码与区位的相差是160,所以*/
fp=fopen("hzk16","rb");
if(fp==NULL)
{
printf("file not find!");
getch();
exit(0);
}
fseek(fp,(94*(i-1)+(j-1))*32,0);/*根据区位找到要显示汉字的地址*/
fread(zk,32,1,fp);
fclose(fp);
huadian(zk,100,100,RED);
getch();
closegraph();
}
外挂的字库是UCDOS的HZK16
本程序可以正常显示汉字,但是为什么必须是double才能正确显示
#include "stdio.h"
void huadian(char *hz,int x,int y,int ys)/*根据字模画点函数*/
{
int i,j,k;
for (i=0;i<16;i++)
for (j=0;j<2;j++)
for (k=0;k<8;k++)
if (hz[i*2+j]&(0x80>>k))
putpixel(x+k+j*8,y+i,ys);
}
int main()
{
int dm=VGA,gm=VGAHI;
double i,j; /*我的问题在这里*/
unsigned char zk[32],hzbuff[3]="情";
FILE *fp;
initgraph(&dm,&gm,"");
i=hzbuff[0]-0xA0,j=hzbuff[1]-0xA0;/*内码与区位的相差是160,所以*/
fp=fopen("hzk16","rb");
if(fp==NULL)
{
printf("file not find!");
getch();
exit(0);
}
fseek(fp,(94*(i-1)+(j-1))*32,0);/*根据区位找到要显示汉字的地址*/
fread(zk,32,1,fp);
fclose(fp);
huadian(zk,100,100,RED);
getch();
closegraph();
}
外挂的字库是UCDOS的HZK16
本程序可以正常显示汉字,但是为什么必须是double才能正确显示