如题:如何得到汉字字库(即16*16的汉字点阵)。
      
      最好不要用HZK16等汉字库文件。请各位高手帮下忙,很急!

解决方案 »

  1.   

    我靠!!这个我最在行了,前几天我还在编写一直接写汉字的dos程序
      

  2.   

    关键的三个函数,自己编的,你可以加以修改,原理一样的
    void get_hz(char incode[],char bytes[])
    {unsigned char qh,wh;
    unsigned long offset;
    qh=incode[0]-0xa0;
    wh=incode[1]-0xa0;
    offset=(94*(qh-1)+(wh-1))*32L;
    lseek(hzk_p,offset,SEEK_SET);
    read(hzk_p,bytes,32);
    }
    int key()
    {union REGS rg;
    rg.h.ah=0;
    int86(0x16,&rg,&rg);
    return rg.h.ah;
    }
    void dishz(int x0,int y0,char code[],int color)
    {unsigned char mask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
    register int i,j,x,y,pos,m;
    char mat[32];
    get_hz(code,mat);
    y=y0;
    for(i=0;i<16;++i)
    {x=x0;
    pos=2*i;
    for(j=0;j<16;++j)
    {m=getpixel(x,y);  m=m^m;
     putpixel(x,y,m);
    if((mask[j%8]&mat[pos+j/8])!=NULL)
    putpixel(x,y,color);
    cx=x;
    cy=(y-4);
    ++x;
    }
    ++y;
    }}
    void showfont(int x,int y,char *s)
    {  x=x*20,y=y*16;
       setbkcolor(BLACK);
       while(*s!=NULL)
       {while(x<640&&(*s!=NULL))
    {
    dishz(x,y,s,fontcolor);
    x+=20;
    s+=2;
    }
    x=20;y+=20;
       }}
      

  3.   

    void dishz(int x0,int y0,char code[],int color);
    void show(int color);
    void get_hz(char incode[],char bytes[]);
    void showfont(int x,int y,char *s);
    main()
    {.....
    int graphdriver =DETECT, graphmode;
    initgraph(&graphdriver, &graphmode, "d:\\tc\\bgi");
    hzk_p=open(".\\hzk16",O_BINARY|O_RDONLY);
    //你要显示汉字时,直接在main()中调用Showfont(x,y,"要显示的字符串");
    //x,y为坐标
    .........
      

  4.   

    谢谢zhaogaojian(蜜柑年成)!
        可是,hzk16这个文件系统里有吗,还是要自己加?
      

  5.   

    将hzk16考到你的程序目录下就可以了
    刚才忘了写一句话,注意用玩关闭文件!!!!!!!!!
      

  6.   

    我看不懂----------》最好不要用HZK16等汉字库文件。
    不用这个那用HZK24 
    哈哈 我也用过,很可惜,我的代码随着格式化而消失了
                           ——————(我大学里写的最长的C代码)
      

  7.   

    用hzk的话,那程序中保存的文件 所在的目录还要添加这个汉字库文件,有些不合理。   因为程序中保存的文件的目录和程序的目录不同。
      

  8.   

    我的程序就是编辑一幅画面(里面有些图形和文字),然后下载到单片机。程序生成的画面保存为文件,那么打开这个文件进行下载时,就要读取hzk。就要保证这个文件所在目录有hzk,不是吗?
      

  9.   

    hzk只需在编辑时用,即只在你的图形编辑器处使用,此处hzk只是帮助你制图形用的,
    你看见dishz函数中的putpixel(x,y,color);实际上输出的不是文字编码,而是文字图形,
    只要你保存的图像格式正确,以后不需要hzk的
      

  10.   

    但问题是,下位机显示汉字时需要文字编码,要通过上位机串口传送。这样,当我打开PC机上的画面文件(保存过的),进行下载时,就要读取hzk文件,若是画面文件所在目录没有hzk,就不行了。(因为程序中打开hzk时,默认为当前目录)这个问题该怎么解决呢?zhaogaojian(蜜柑年成),麻烦您再想想办法。
      

  11.   

    zhaogaojian (30)
        繁体字库显示会吗?