huzi00008 发表于 2006-11-21 17:03
[求助]如何从字模中读取特定的汉字??
老师留了一个作业:关于从字模文件读取全部汉字输出在屏幕上 (续):<br>
<br>
现在要求不是全部读取,而是特定的指定某个字读出,输出在屏幕上<br>
ba_wang_mao 发表于 2006-11-22 08:41
<P>#include <conio.h><BR>#include <stdio.h><BR>/*功能:在屏幕以(x,y)为左上角输出color色的s中-英混合字符串*/<BR>void put_chinese(int x,int y,unsigned char *s,int color)<BR>{<BR> unsigned char mat[32],i,j,is_hz,can_put,<BR> unsigned long position;<BR> FILE *fp;<BR> <BR> fp=fopen("hzk16","rb");/*打开汉字库文件*/<BR> if (fp==NULL)return;<BR> while(*s!=0) /*开始输出文字循环*/<BR> {<BR> if(*s>0xa0&&*(s+1)>0xa0 <BR> {/*若为中文读取中文字模*/<BR> i=*s-0xa0;/*计算区号*/<BR> j=*(s+1)-0xa0;/*计算位号*/<BR> position=(94*(i-1)+(j-1))*32l;/*计算中文字模位置*/<BR> fseek(fp,position,SEEK_SET);/*移动文件指针到字模位置*/<BR> fread(mat,32,1,fp);/*读取为中文字模*/ <BR> }<BR> /*开始输出字模了,将读取的中文或英文字模显示*/<BR> for(j=0;j<16;j++)<BR> for(i=0;i<16;i++)<BR> if((0x80>>i%8)&mat[2*j+i/8])/*对于字模相应位为1则输出*/<BR> putpixel(i+x,y+j+(1-is_hz)*4,color);/*将英文字模显示时下移4pixel,这样看起来美观些*/<BR> x+=18;/*中文间距为18pixel*/<BR> s+=2;<BR> }<BR> fclose(fp);<BR>}<BR><BR>void main()<BR>{<BR> put_chinese(100,200,"中文实例",RED);<BR><BR>}</P>
ba_wang_mao 发表于 2006-11-22 08:43
is_hz=1;
ba_wang_mao 发表于 2006-11-22 08:44
putpixel(i+x,y+j+(1-is_hz)*4,color) 改为 putpixel(i+x,y+j,color)
huzi00008 发表于 2006-11-22 09:12
帮忙看看这个程序有哪些修改的地方(我这的要求是利用svga输出 )<br>
#include <stdio.h><br>
#include <vga.h><br>
#define matsize 16<br>
#define h 32<br>
<br>
int main(void)<br>
{<br>
FILE *f,*p;<br>
int i,j,k,n,w,z;<br>
int x=0,y=0;<br>
char xm[h];<br>
char * e;<br>
<br>
unsigned char a,b;<br>
if((p=fopen("cclib.16","rb"))==NULL)<br>
{<br>
printf("error\n");<br>
getchar();<br>
exit(1);<br>
}<br>
<br>
if((f=fopen("xm.txt","r"))==NULL)<br>
{<br>
printf("error\n");<br>
getchar();<br>
exit(1);<br>
}<br>
<br>
<br>
char * e=xm[h];<br>
while(!feof(p))<br>
fread(e,32,1,p);<br>
while(!feof(f))<br>
t=fgetc(f);<br>
<br>
vga_init();<br>
vga_setmode(G1024x768x256);<br>
vga_setcolor(7);<br>
n=(matsize-1)/8+1;<br>
for(j=0;j<matsize;j++)<br>
{ for(i=0;i<n;i++)<br>
{ for(k=8;k>0;k--)<br>
{<br>
a=fgetc(e);<br>
if(a%2==1)<br>
vga_drawpixel(i*8+k+w,j+y);<br>
a=a>>1;<br>
}<br>
}<br>
}<br>
vga_getch();<br>
vga_clear();<br>
vga_setcolor(7);<br>
<br>
vga_setmode(TEXT);<br>
fclose(p);<br>
return 0;<br>
}<br>
<br>
页:
[1]