西文DOS下点阵汉字的放大显示

Author: Date: 1996-05-31

        int handle;
        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。
        这个过程中没有给出汉字放大后,锯齿平滑出理的代码,有兴趣的朋友可与本人联系。