网站大量收购独家精品文档,联系QQ:2885784924

第七章矢量文本的生成及使用.pptVIP

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

计算机图形学;第7章 矢量文本的生成及使用 ;7.1 矢量文本概述 ;7.1 矢量文本概述 ;7.2 矢量文本的生成 ;7.2.1 矢量化原理 ;7.2.2 单点划线的点阵文本生成;7.2.3 由线段代替相邻点的搜索原则;7.2.4 矢量笔划的归并处理 ;7.3 矢量文本库的存储结构 ;7.3 矢量文本库的存储结构 ;7.3 矢量文本库的存储结构 ;7.4 矢量文本库的调用 ; void xshz(char *str, char *style, float x0, float y0, float width, float height, float dist, float direct, float rotate, int color) { int i, j, k=0; int PenDn, PenDnBefore; long int u; unsigned char qm, wm; float x1, y1, x, y, x11, X1, Y1, X2, Y2; FILE *fpidx, *fplib; struct hz_idx_table *idx; /* 声明一个库索引结构指针变量 */ struct hz_lib_table *lib; /* 声明一个库文件结构指针变量 */ idx = (struct hz_idx_table *)malloc(sizeof(struct hz_idx_table)); lib = (struct hz_lib_table *)malloc(sizeof(struct hz_lib_table)); fpidx= fopen(slhz.idx, rb); fplib= fopen(slhz.lib, rb); direct = direct * PI / 180; rotate = rotate * PI / 180; for (i=0; ik; i=i+2) { PenDnBefore=0; qm = hz[i] - 160; /* 计算汉字区码*/ wm = hz[i+1] - 160; /* 计算汉字位码*/ u = ((long)(qm-16)*94 + wm-1)*6; /* 计算汉字在索引文件中的位置*/ fsetpos(fpidx, u); /* 索引文件定位*/ fread(idx, 6, 1, fpidx); /* 读索引文件中读取6个字节*/ fsetpos(fplib, idx-address); /* 矢量文本库定位*/ x = x0 + i * dist * cos(direct); /* 单个汉字在屏幕上显示的首位置*/ y = y0 + i * dist * sin(direct); ; for (j=0; jidx-line_num; j++) { /* 按汉字笔划矢量数循环*/ fread(lib, 2, 1, fplib); /* 读取一对坐标*/ if (lib-x 0x80) { /* 判断本点是抬笔还是落笔*/ lib-x = lib-x -128; /* 为落笔时滤去落笔信息*/ PenDn = 1; } else { PenDn = 0; } x11 = (float)lib-x / 72 * width ; /* 计算该点相对于汉字左上角*/ y1 = (float)lib-y / 72 * height ; /* 的相对坐标 */ x1 = x11 * cos(rotate) - y1 * sin(rotate) + x; /* 计算该点的 */ y1 = x11 * sin(rotate) + y1 * cos(rotate) + y; /* 实际坐标 */ if (PenDnBefore) line(X2, Y2, X1, Y1); /* 若前一点为落笔,则与本点相连 */

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档