版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.3文字的生成技术,常用的方法有:,点 阵 式 pDotText 矢 量 式 pShiLiangText 编 码 式 directText,点阵式字符 DEF:每个字符都定义成一个称为掩膜的矩阵。矩阵中的元素都是一位二进制数,当该位为1时,表示字符的笔划经过此位,对应于此位的象素应置为字符颜色;当该位为0时,表示字符的笔划不经过此位,对应于此位的象素应置为背景色或不改变。,0000000000000000 0001111111110000 0001100000011000 0001100000001100 0001100000001100 0001100000011000 000110000
2、1100000 0001111111000000 0001100000000000 0001100000000000 0001100000000000 0001100000000000 0000000000000000 0000000000000000,当该位为1时,表示字符的笔划经过此位 当该位为0时,表示字符的笔划不经过此位,P-DotText,掩膜的矩阵(1616),两个问题 (1)如何表示掩膜的矩阵? (2)如何确定各个位是1还是0,Int (16位) Int textP16= ox0000, 0 x0000, 0 x1FF0, 0 x1818, 0 x0000 ,0000000000
3、000000 0000000000000000 0001111111110000 0001100000011000 0001100000001100 0001100000001100 0001100000011000 0001100001100000 0001111111000000 0001100000000000 0001100000000000 0001100000000000 0001100000000000 0000000000000000 0000000000000000 0000000000000000,0000000000000000 0001111111110000 0001
4、100000011000 0001100000001100 0001100000001100 0001100000011000 0001100001100000 0001111111000000 0001100000000000 0001100000000000 0001100000000000 0001100000000000 0000000000000000 0000000000000000 0000000000000000,10000000000000000 01000000000000000 00100000000000000 00010000000000000 00001000000
5、000000 00000100000000000 00000010000000000 00000001000000000 00000000100000000 00000000010000000 00000000001000000 00000000000100000 000000000000100000 000000000000010000 000000000000001000 000000000000000100 000000000000000010 000000000000000001,Text16,mask16,如何判断字模中各个位的子呢?,void displayText(int x0,
6、int y0,int Text,int color) int i,j; for (i=0;i16;i+) /行 for(j=0;j16;j+) /列 ,if (Texti ,int text16= 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 xFFFF, 0 xFFFF,0 xFFFF, 0 xFFFF, 0 x0000, 0 x0000, 0 x0000, 0 x0000, 0 x0000,0 x0000 ; int mask16=0 x8000, 0 x4000, 0 x2000, 0 x1000, 0 x0800, 0
7、x0400, 0 x0200, 0 x0100, 0 x0080, 0 x0040, 0 x0020, 0 x0010, 0 x0008, 0 x0004, 0 x0002, 0 x0001 ,点阵式字符时主要的文字表示形式。 常用的点阵大小有 5 7、7 9、8 8、16 16等等 当点阵变大时,字型可以做得非常漂亮。 优点:字形美观是字符表示的主要形式 缺点:旋转比较困难、占用的存储空间较大,矢量式字符 DEF:将字符看作是一个图形,用点坐标的序列来表示一个字符,相邻两点表示一条矢量,字符的形状便由矢量序列刻划。,例:“B”是由顶点序列 a, b, c, d, e, f, e, g, h,
8、 I, j, k ,a, l,a 的坐标表达,调用矢量式字符的过程相当于输出一个polylin,P-ShiLiangText,例:,int text= 50,375, 200,375, 225,350,225, 225,200,200, 50,200, 200,200, 225,175, 225,50, 200,25, 25,25, 50,25, 50,375, 25,375, 50,375; void displayText(int x,int y,int *text,int len) int i; int *newText=malloc(sizeof(int)*len); for(i=0;
9、ilen/2;i+) ,drawpoly(len/2,newText);,newText2*i=x+text2*i ; newText2*i+1=y+text2*i+1 ;,void displayText2(int x,int y,int *text,int len) int i; moveto(x+text0,y+text1); for(i=1;ilen/2;i+) ,lineto(x+text2*i,y+text2*i+1);,矢量式字符的优点: 矢量式字符具有和图形相一致的数据结构,因而可以接受任何对于图形的操作,如放大、旋转,平移等,字符B的旋转、平移、缩放,和斜体(x方向错切15)
10、,void displayText2(int x,int y,int *text,int len) int i; setlinestyle(SOLID_LINE,0,3); moveto(x+text0,y+text1); for(i=1;ilen/2;i+) lineto(x+text2*i,y+text2*i+1); ,方向编码 DEF:方向编码式字符用有限的若干种方向编码来表达一个字符. 8个方向的编码为0 7,一个字符就可以表示 为一连串方向码,方向编码是: 000 11 2222 33 444 55 6666 77 ,“B”就表示为8方向编码: 0000 123 444 000 12
11、3 4444 0 66666640,P-DirectText.c,Model82= 1,0,1,-1, 0,-1,-1,-1, -1,0, -1,1,0,1,1,1;,x,y,int direct27=0,0,0,0,1, 2,3,4,4,4, 0,0,0,1,2, 3,4,4,4,4, 0,6,6,6,6, 6,4 ; void displayText(int x0,int y0,int direct, int len,int size) int i; float Model82= 1,0,1,-1, 0,-1,-1,-1, -1,0, -1,1,0,1,1,1; moveto(x0,y0)
12、; for (i=1;ilen;i+) ,linerel(Model directi0*size, Modeldirecti1*size) ;,void displayText(int x0,int y0,int Text,int len,int size) int i; float direct82= 1,0, sqrt2 * cos30,-sqrt2*sin30, +sin15,-cos15, -sqrt2*sin30,-sqrt2*cos30, -1,0, -sqrt2*cos30,sqrt2*sin30, -sin15,cos15, -sqrt2*sin30,sqrt2*cos30 ;
13、 moveto(x0,y0); for (i=1;ilen;i+) linerel(directTexti0*size,directTexti1*size); ,void displayText(int x0,int y0,int direct,int len,int size,int alfa) int i; float Model82= 1,0,sqrt2*cos(45-alfa),-sin(45-alfa), +sin(alfa),-cos(alfa),-sin(45-alfa),-cos(45-alfa),-1,0, -cos(45-alfa),sin(45-lfa),sin(alfa
14、),cos(alfa),sin(45-alfa),cos(45-alfa); moveto(x0,y0); for (i=1;ilen;i+) ,linerel(Model directi0*size, Modeldirecti1*size);,程序设计题(任选一) (1)建立一个十个字以上的字库,并能够显示该字库中的字符(选用任何字符输出方法) (2)实现DDA直线算法和DDA角度画圆算法 (3),void draw_DDA_line(int x0,int y0,int x1,int y1) float k; float x,y; int temp; float deltax,deltay ; k=abs(y1-y0)*1.0/abs(x1-x0) ; my_putpixel(x0,y0,1);,程序: #include stdio.h #include graphics.h #include math.h,if (kx1) temp=x0; x0=x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医学检验员考试试题及答案解析
- 高架桥分部分项验收施工方案
- 某桥梁暴雨安全生产应急措施
- 国际货运代理模拟考试题及答案
- 2026年计算机应用基础统一考试试题及答案
- 监理工程师市政公用工程继续教育考试试题及答案(供参考)
- 风管防火阀安装验收记录
- 电工入职考试试题及答案
- GBT 47597-2026《废弃化学品 干燥减量和灼烧减量测定方法》
- 2026年苏教版五年级道德与法治期末重难点拔高试卷(含答案可下载)
- 沪教版(五四学制)(2024)六年级下册单词表+默写单
- 家庭教育指导师考试题库(附答案)
- DL∕T 1870-2018 电力系统网源协调技术规范
- DZ∕T 0148-2014 水文水井地质钻探规程(正式版)
- 病案管理委员会工作汇报
- 中国抗日战争史智慧树知到期末考试答案章节答案2024年浙江大学
- 高一生物必修一复习资料
- 大学武装部正规化建设实施方案
- 第8章铁路运输生产技术计划课件
- GB/T 19042.5-2022医用成像部门的评价及例行试验第3-5部分:X射线计算机体层摄影设备成像性能验收试验与稳定性试验
- GB/T 29348-2012法庭科学枪械射击弹头痕迹检验规范
评论
0/150
提交评论