荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: zzt (好好学习,天天向上), 信区: Program
标  题: [转载] [转寄] Re: 请教UCDOS16点阵字库汉字字模地址
发信站: BBS 荔园晨风站 (Thu Mar  2 16:59:28 2000), 转信

【 以下文字转载自 zzt 的信箱 】
【 原文由 zhuzutao.bbs@bbs.whnet.edu.cn 所发表 】
发信人: yanlaoda (我是谁), 信区: Programming WWW-POST
标  题: Re: 请教UCDOS16点阵字库汉字字模地址
发信站: 武汉白云黄鹤站 (Mon Jan  3 16:41:37 2000) , 站内信件


 int hzk;
 void open(void);
 void get(char incode[],char bytes[]);
 void dishz(int x,int y,char code[],int color);

void hanxian(int x,int y,char *s,int size)
{
 int driver=DETECT;
 int mode=0;
 initgraph(&driver,&mode,"");
 open();
 while(*s!=NULL)
 {
   while((640-x)>(16*size)&&*s!=NULL)
   {
    dishz(x,y,s,LIGHTRED);
    x+=16*size;
    s+=2;
    }
    x=10;
    y+=20*size;
    }
    close(hzk);
    closegraph();
    }
void open()
{
 hzk=open("hzk16",O-BINARY|O-RDONLY);
 if(hzk==-1)
 {printf("error");
  getch();
  closegraph();
  exit(1);
  }
  }
 void get(char code[],char bytes[])
 {
  unsigned char qh,wh;
  unsigned long offset;
  qh=incode[0]-0xa0;
  wh=incode[1]-0xa0;
  offset=(94*(qh-1)+(wh-1))*72l;
  lseek(hzk,offset,SEEK-SET);
  read(hzk,bytes,32);
  }
void dishz(int x0,int y0,char code[],int color)
{
  unsigned char mask[]={0x80,0x40,0x20,0x10,0x8,0x4,0x2,0x1};
  register int i,j,k,q,r;
  char mat[32];
  get(code,mat);
  for(i=0;i<16*size;i+=size)
  for(q=0;q<size;q++)
  for(j=0;j<22;j++)
  for(k=0;k<8;k++)
  {
    if ((mask[k%8]&mat[3*i/size+j])!=NULL)
    for(r=0;r<size;r++)
    putpixel(x0+i+size,y0+j*size*8+k*size,color)
    }
    }



【 在 yemao (野猫) 的大作中提到: 】
: 请教那位高手,如何由汉字区位码得到UCDOS16点阵字库的字模地址,用C语言实现。
: 急需,不胜感谢!

--
※ 来源: 武汉白云黄鹤站 bbs.whnet.edu.cn. [FROM: 202.114.7.210]
--
※ 转寄:.武汉白云黄鹤站 bbs.whnet.edu.cn.[FROM: 210.39.3.50]
--
※ 转载:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.1.11]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店