汉字的显示与放大教学课件PPT.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汉字的显示与放大教学课件PPT

* * 一、把汉字存入内存 在源程序中把要显示的汉字(一个或多个)存到内存中。 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 说明:字库分为显示字库和打印字库两种,区别有两点: 显示字库中每个字的

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档