/*输出函数*/
void Print(char array[][16])
{
int i,j;
for(i=0;i<16;i++)
{
for(j=0;j<16;j++)
{
printf("%c",array[i][j]);
}
printf("\n");
}
}
/*旋转函数*/
int revolve(char array[][16],char **narray,int m,int n,int angle)
{
if(((angle-90)%360==0)||((angle+270)%360==0))
*((char*)narray+n*i+j)=array[j][15-i];
else if(((angle+90)%360==0)||((angle-270)%360==0))
*((char*)narray+n*i+j)=array[15-j][15-i];
else if(((angle-180)%360==0)||((angle+180)%360==0))
*((char*)narray+n*i+j)=array[15-i][j];
else if(angle%360==0)
*((char*)narray+n*i+j)=array[i][j];
int i,j;
for(i=0;i<16;i++)
{
for(j=0;j<16;j++)
{
else
return 0;
}
}
return 1;
}
/*翻转函数*/
int turnover(char array[][16],char **narray,int m,int n,int tag)
{
int i,j;
for(i=0;i<16;i++)
{
for(j=0;j<16;j++)
*((char*)narray+n*i+j)=array[i][15-j];//左右翻转
*((char*)narray+n*i+j)=array[15-i][j];//上下翻转
{
if(tag==0)
else if(tag==1)
else
return 0;
}
}
return 1;
}
/*放大函数的辅助,提取 0、1 状态*/
void getFontInfo(char *mat,int row,int column,int &phasInfo)
{
if(mat[2*row+column/8]&(0x80>>(column%8)))
{
phasInfo=1;
}
else
{
}
}
phasInfo=0;
/*放大函数 */
void magnify(char *mat,int multiple)
{
int i,j,k,r;
int phasInfo;
for(i=0;i<16;i++)
{
for(k=0;k
}
printf("\n");
}
}
}
//////////////////////////////////////////////////////////////////
int i=0,j=0,q=0;
char mark;
int flag,angle,tag,multiple;
char mat[16][2],array[16][16],narray[16][16];
unsigned char * chinese;
char input[3];
FILE *HZK;
printf("\n\t\t========本程序是对点阵字库 HZK16 的读取========\n");
printf("\t\t==========高忠派 U200913888 通信 0904=========\n");
/*选择不同功能*/
printf("\n 请选择进入不同的功能模式:\n");
printf("\t1、直接显示汉字。\n");
printf("\t2、显示旋转汉字(输入正数为逆时针旋转,输入负数为顺时针旋转)。
printf("\t3、显示翻折汉字(输入 0 为左右翻转,输入 1 为上下翻转)。\n");
printf("\t4、显示放大汉字。\n");
for(;;)
{
int main()
{
\n");
fflush(stdin);
printf("请选择功能模式:");
scanf("%d",&flag);
/*汉字输入*/
fflush(stdin);
printf("请输入一个汉字:");
gets(input);
chinese=(unsigned char *)input;
Read(HZK,chinese,(char **)mat);
change(mat,(char **)array,16,16);
switch(flag)
{
case 1:
printf("直接输出汉字:\n");
Print(array);
break;
case 2:
printf("输入旋转角度(90 的整数倍)");
scanf("%d",&angle);
revolve(array,(char**)narray,16,16,angle);
if(angle%90==0)
{
Print(narray);
printf("输入错误!\n");
printf("选择旋转方式(0 或 1)");
scanf("%d",&tag);
turnover(array,(char**)narray,16,16,tag);
if(tag==0||tag==1)
{
Print(narray);
}
else
break;
case 3:
}
else
break;
case 4:
printf("输入错误!\n");
printf("选择放大倍数");
scanf("%d",&multiple);
magnify((char*)mat,multiple);
break;
default:
printf("输入错误!\n");
break;
}
printf("\n 输入#结束,其他任意键继续:");
fflush(stdin);
if((mark=getchar())=='#')
break;
}
return 0;
}