- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                * * 一、把汉字存入内存 在源程序中把要显示的汉字(一个或多个)存到内存中。 char  p[ ] = “汉字显示技术”; 或: char *p = “汉字显示技术”; 存储源程序时,实际存储的是这些汉字的机内码  (正如英文字符要被转换为ASCII码) 运行程序时,机内码将被装入内存   * * 二、计算地址码 由机内码可计算出地址码: 从内存中取出一个汉字的机内码,用来计算区号qh和位号wh。 qh = *(p+i) -160; wh = *(p + i + 1) - 160; 计算该汉字的地址码  (设字库是S点阵) offset = ((qh - 1)*94 + (wh - 1))*S*S/8;    * * 三、从字库中获得字形码 #define  S  16                 //点阵数 #define  HZK  “d:\\tc\\font\\hzk16f” char buffer[S*S/8];       //用来存字形码 if((fp = fopen(HZK, rb)) == NULL) {        printf(“打不开字库文件\n”);          exit(0); } fseek(fp, offset, 0); fread(buffer, S*S/8, 1, fp); * * 四、画出汉字 设要在屏幕的(x,y)处显示该汉字  坐标 x,y  第0字节对应的8个像素 第25字节对应的8个像素 * * 要在屏幕上显示出汉字,需要对字型码中的每个字节进行处理,将每个字节变成8个像素 编程思路:     for(i = 0; i  S*S/8 ; i++) {                         ……   //将第i个字节的字型码,画成8个点      } 四、画出汉字 (方法一) * * 四、画出汉字 (方法一) 字形码的第i个字节,所决定的8个像素的起点是(x+(i%(S/8))*8, y+i*8/S)。 程序中要针对第i个字节的8个位依次进行判断和操作,  对于字形码为1的位,画出一个点 char mask[] = { 0x80,  0x40,  0x20,  0x10,                       0x08,  0x04,  0x02,  0x01  } ; for(j = 0; j = 7; j++)       if((buffer[i]  mask[j]) != 0) 	      putpixel(x+(i%(S/8)*8+j, y+i*8/S, color); * * 故,循环处理字形码每个字节的代码是: char mask[] = { 0x80,  0x40,  0x20,  0x10,                       0x08,  0x04,  0x02,  0x01  } ; for(i = 0; i  S*S/8 ; i++) {         for(j = 0; j = 7; j++)            if((buffer[i]  mask[j]) != 0) 	            putpixel(x+(i%(S/8)*8+j, y+i*8/S, color);        x += S+5;         //设置字间隔 } 四、画出汉字 (方法一) 详细代码:s14_1_1. c * * 四、画出汉字 (方法二) 也可以针对点阵图中的每一像素来循环 可以算出,  图中第i行第j列的像素由字形码的第(S/8*i+j/8)字节决定,因此循环可写成: for(i = 0; i = S-1; i++) {        for(j = 0; j = S-1; j++) 	        if(((buffer[S/8*i + j/8])  mask[j%8]) != 0) 	             putpixel(x+j, y+i, color);  } 详细代码:s14_1_2. c * * 五、汉字的放大 汉字的放大实际上就是把一个像素变成几个像素。例如,若将汉字放大2倍,则汉字的宽度和高度都要变成2倍,原来的一个像素要变成4个像素。 若要放大m倍,则要把1个像素变成m2个像素 for(k = 0; k  m; k++) 	  for(n = 0; n  m; n++) 	        putpixel(x+m*j+k, y+i*m+n, color);  详细代码:s14_2. c * * 实  训 1、编写程序,在图形状态下显示自己的姓名,然后再放大二倍显示。 2、请针对打印字库修改例14.1、14.2      说明:字库分为显示字库和打印字库两种,区别有两点: 显示字库中每个字的
                您可能关注的文档
最近下载
- 五年级奥数相遇问题及答案.pdf VIP
- 五年级数学奥数讲义.pdf VIP
- 最新××镇村(社区)后备干部考试卷及答案.pdf VIP
- 五年级数学奥数讲义134讲.doc VIP
- 牛羊屠宰兽医卫生检验人员理论考试题库及答案.docx VIP
- 牛品种改良与人工授精技术培训课件.ppt
- 2025年综合类-电力机车钳工-电力机车钳工(高级)历年真题摘选带答案(5卷单选题100道).docx VIP
- 2025年综合类-电力机车钳工-电力机车钳工(高级)历年真题摘选带答案(5卷单选一百题).docx VIP
- 2025年综合类-电力机车钳工-电力机车钳工(高级技师)历年真题摘选带答案(5卷单选100题合辑).docx VIP
- 马来酸氯苯那敏片详细说明书与重点.docx VIP
 原创力文档
原创力文档 
                        

文档评论(0)