图形模式下的汉字显示.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图形模式下的汉字显示

图形模式下的汉字显示 图形模式下的汉字显示   我们在编写一些应用软件时,为了使软件更为通俗浅显、易学易用,具备汉字的用户界面是必不可少的条件。在文本模式下,只要有汉字操作系统的支持,显示汉字是不成问题的。只要用printf或cprintf就可以了。#include void main(){printf(我正在学习C语言!);}   在图形模式下显示汉字就稍稍麻烦些。可幸的是有很多人从事这一问题的研究,并开发了一些用于汉字显示的函数。这些函数不需要汉字系统的支持,但用到其中的字库文件。如UCDOS的HZK16。   汉字显示的第一步是打开字库文件。   函数: int OpenHz(const char *Hz16Path); 功能:打开字库文件Hz16Pathint handle; /*打开的字库文件指针*/ int OpenHz(const char *Hz16Path){return (handle=open(Hz16Path,O_RDONLY|O_BINARY));} 打开字库文件后,就可以用下面介绍的函数显示16点阵的汉字。   函数: int WrtHz16(int x,int y,int z,int color,char *p); 功能:在(x,y)用color颜色显示汉字串p,汉字之间的空格数为WrtHz16(int x, int y,int z,int color,char *p) { unsigned int i,c1,c2,f=0; /*x,y:write at (x,y);*/ int rec,i1,i2,i3; /*z:space between;*/ long l; /*color:txt color*/ char by[32]; /*p:HZ str*/ if( handle0 ) return -1; while((i=*p++)!=0){ if(i0xa1) if(f==0){ c1=(i-0xa1)0x07f; f=1; } else{ c2=(i-0xa1)0x07f; f=0; rec=c1*94+c2; l=rec*32L; lseek(handle,l,SEEK_SET); read(handle,by,32); for(i1=0;i116;i1++) for(i2=0;i22;i2++) for(i3=0;i38;i3++) if(GetBit(by[i1*2+i2],7-i3)) putpixel(x+i2*8+i3,y+i1,color); x=x+z+16; } } return(x); } 函数GetBit定义如下:   函数: int GetBit(unsigned char c,int n); 功能:取得汉字的点阵数据。 int GetBit(unsigned char c,int n) { return((cn)1); } 汉字显示结束,应该关闭字库文件。 void CloseHz(void) { close( handle ); } #include \Caic\Include\Hz.h #include #include const char* Hz16Path = \\UCDOS\\Hzk16.; const char* HzStr = 苦丁香C语言辅助学习软件; void main(){ int gr=DETECT,gm; initgraph(gr,gm,\\Caic\\Bgi); OpenHz( Hz16Path ); Wrt16Hz(20,20,4,RED,HzStr); CloseHz(); getch(); closegraph(); }显示24点阵及放大汉字   下面探讨一下如何显示24点阵及放大汉字。24点阵字库也可在任意一种汉字系统中找到。如UCDOS的HZK24S。 函数: int WrtHz24(int x,int y,int z,int color,int m,\int n,char *p); 功能:显示24点阵及放大汉字。 int WrtHz24(int x,int y,int z,int color,int m,int n,char *p) { unsigned int i,c1,c2,f=0; /*z: 汉字字符间的空格*/ int i1,i2,i3,i4,i5,rec; /*x,y: 先是位置(x,y)*/ long l; /*color:汉字颜色*/ char by[72]; /*m: x 方向的放大倍数*/ /*n: y 方向的放大倍数*/ if( handle0 ) return -1; /*p: 显示汉字串*/ while((i=*p++)!=0){ if(i0xa1) if(f==0){ c1=(i-0xa1)0x7

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档