求助!用Turboc调用UCDOS的中文字库,输出汉字!如何实现?
今天遇到个问题。如何用Turboc输出汉字?想了半天不得其解。
特来求救!大家能否帮忙解答,利用UCDOS的字库,让TC输出16×16点阵的汉字。谢谢
问题点数:50、回复次数:4Top
1 楼xteaj(半桶水)回复于 2004-09-01 21:00:05 得分 25
int handle;
int openzk(void)
{
handle=open("c:\\ucdos\\hzk16",O_RDONLY|O_BINARY);
if(handle==-1)
{
outtext("error on open file");
exit(1);
}
return handle;
}
int putz16(int x1,int y1,int z,int color,int m,int n,char *p)
{
long wz;
unsigned int i,f=0,c1,c2;
int i1,i2,i3,i4,i5,rec;
char by[32];
while((i=*p++)!=0)
{
if(i>0xa1)
if(f==0)
{
c1=(i-0xa1)&0x07f;
f=1;
}
else
{
c2=(i-0xa1)&0x07f;
f=0;
rec=c1*94+c2;
wz=rec*32L;
lseek(handle,wz,SEEK_SET);
read(handle,by,32);
for(i1=0;i1<16*m;i1=i1+m)
for(i4=0;i4<m;i4++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(getbit(by[i1/m*2+i2],7-i3))
for(i5=0;i5<n;i5++)
putpixel(x1+i2*8*n+i3*n+i5,y1+i1+i4,color);
x1=x1+16*m+z;
}
}
return(x1);
}
Top
2 楼storyboy(故事)回复于 2004-09-03 17:41:29 得分 25
#include<stdio.h>
#include<graphics.h>
/* x,y为显示坐标,s为显示字符串,colour为颜色 */
void hanzi16(int x,int y,char *s,int colour)
{
FILE *fp;
char buffer[32]; /* 32字节的字模缓冲区 */
register i,j,k;
unsigned char qh,wh;
unsigned long location;
if((fp=fopen("hzk16","rb"))==NULL)
{
printf("Can't open hzk16!");
getch();
exit(0);
}
while(*s)
{
qh=*s-0xa0;
wh=*(s+1)-0xa0;
location=(94*(qh-1)+(wh-1))*32L; /* 计算汉字字模在文件中的位置 */
fseek(fp,location,SEEK_SET);
fread(buffer,32,1,fp);
for(i=0;i<16;i++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
if(((buffer[i*2+j]>>(7-k))&0x1)!=NULL)
putpixel(x+8*j+k,y+i,colour);
s+=2;
x+=16; /* 汉字间距 */
}
fclose(fp);
}
main()
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"");
hanzi16(246,200,"疯狂甲虫乐园!",BROWN);
getch();
closegraph();
}Top
3 楼xloveme(浪人)回复于 2004-09-04 16:23:00 得分 0
用command.com/k c:\windows\command\pdos95.exe 就可以了。Top
4 楼hcj2002(流浪者·躬自厚而薄责于人 )回复于 2004-09-04 20:04:08 得分 0
没有用过
^_^Top




