西文DOS下点阵汉字的放大显示
int getbit(unsigned char c,int n)
{
return ((c>>n)&1);}
void Double-Hz16(int qu,int wei,int x,int y,int color)
{unsigned int i;
int i1,i2,i3,place;
long II;
char by[32];
label: place=(qu-1)*94+wei-1;
II=place*32L; /*handle是主函数中打开的汉字库文件句柄*/
Iseek(handle,II,SEEK-SET);
read(handle,by,32);
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1*2+i2],7-i3))
{ putpixel(x+i2*8*2+i3*2,y+2*i1,color);
putpixel(x+i2*8*2+i3*2+1,y+2*i1,color);
putpixel(x+i2*8*2+i3*2,y+2*i1+1,color);
putpixel(x+i2*8*2+i3*2+1,y+2*i1+1,color);
}
}/* end of Double-Hz16 */
此函数需要用到汉字的区位码,若是汉字内码,须将label一行改为place=(Nq-A1)*94+NW-A1。
这个过程中没有给出汉字放大后,锯齿平滑出理的代码,有兴趣的朋友可与本人联系。