(计算机应用技术专业论文)汉字字形描述技术研究.pdf_第1页
(计算机应用技术专业论文)汉字字形描述技术研究.pdf_第2页
(计算机应用技术专业论文)汉字字形描述技术研究.pdf_第3页
(计算机应用技术专业论文)汉字字形描述技术研究.pdf_第4页
(计算机应用技术专业论文)汉字字形描述技术研究.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 随着i n t e r n e t 的发展和普及,越来越多的网络版汉语工具书在 网络上为汉语学习者提供查询服务。这些网络版工具书经常要显示汉 字的笔顺和各种汉字部件( 包括偏旁、部首) ,由于汉字数量很大, 目前的计算机标准汉字字符集中既没有把汉字基本部件字形全部包 括进来,也没有把每个汉字的笔画分解形式包括进来。在浏览器中显 示汉字笔顺和各种部件时,往往采用f l a s h 动画或图片方式来实现。 采用f l a s h 动画来演示汉字的动态书写过程,是一种较好的表现汉字 笔顺的方式,但制作f l a s h 动画的工作量巨大,而且这些f l a s h 动画 往往只能以一种固定的方式来显示。因而它不是一种好的解决办法。 本文通过研究汉字字形描述和字形绘制技术,开发一个能在网络 上自动绘制汉字笔顺和汉字部件的软件。给用户提供一个方便的查 询、显示汉字笔顺、部件的方法。 首先,文中介绍了g d i + 技术和它的新特色。利用g d i + 的路径技 术和汉字楷体g b _ 2 3 1 2 、仿宋两个t r u e t y p e 字库的特征( 以笔画为 单位来描述每个汉字的字形的,即一个封闭图形对应一个笔画轮廓) , 把一个汉字的笔画轮廓信息添加到一个6 d i + 的路径中。路径对象相 当于一个汉字,路径可以包含许多子路径,子路径相当于一个笔画。 通过对路径和子路径的控制最终完成汉字笔画的绘制。 其次,本文介绍了c o m 组件技术。为了实现程序共享,构造一个 能在网络环境中调用的组件是一个很好的方法。应用此组件只需要在 服务器端注册并进行必要的配置就可以使用,组件对客户来说是透明 的。组件将用户需要用到的功能以接口形式提供,而把具体的功能包 含在组件内部。根据需要设计了一个接口,三个基本函数的功能分别 是显示汉字笔顺、修改汉字笔顺和显示汉字部件。 最后,由于楷体g b _ _ 2 3 1 2 、仿宋字库中保存的笔画并没有完全按 照汉字笔顺序列存储,需要以交互方式调整笔画数据。系统中使用 a c c e s s 数据库来存储调整信息。文中对使用a d o 数据对象访问数据 库的有关技术进行了必要的叙述。 综上所述,本文对目前计算机采用的主要汉字字形描述技术进行 了分析和研究,设计实现了汉字笔画、部件自动查询、绘制系统,并 对系统开发过程中遇到的相关技术问题及解决方案进行了详细说明, 最后给出了进一步工作的展望。 关键词笔顺,路径,组件,a d o a b s t r a c t a l o n gw i t ht h ed e v e l o p m e n ta n dp o p u l a r i z a t i o no fi n t e m e t ,m o r e a n dm o r ec h i n e s el a n g u a g eo n l i n et o o l sp r o v i d eq u e r y i n gs e r v i c e st o l e a r n e r so f t h ec h i n e s e t h e s en e t w o r k sb o o k zo f t e ni n d i c a t et h eo r d e ro f s t r o k e so fc h i n e s ec h a r a c t e r sa n dv a r i o u sc o m p o n e n t s ( i n c l u d i n gt h e r a d i c a l s ) o fc h i n e s ec h a r a c t e r s d u et ot h en u m b e ro fc h i n e s ec h a r a c t e r 3 i sl a r g e a tp r e s e n t ,t h es e to fc h i n e s es t a n d a r dc h a r a c t e r sn e i t h e ri n c l u d e a l lt h eb a s i cc o m p o n e n t sa n dg l y p hn o re a c ho ft h ed e c o m p o s i t i o no f s t r o k e so fc h i n e s ec h a r a c t e r s f l a s ha n i m a t i o no rp h o t o g r a p h sa r eo f t e n u s e dt od i s p l a ys t r o k e sa n dt h ev a r i o u sc o m p o n e n t si nt h eb r o w s e r f l a s h a n i m a t i o nd i s p l a yt h ep r o c e s so fw r i t i n gc h i n e s ec h a r a c t e r si nd y n a m i c p r o c e s s ,i t sag o o dw a yt op e r f o r mt h eo r d e ro fw r i t i n gc h i n e s e c h a r a c t e r s h o w e v e r , t h ep r o d u c t i o n o ff l a s ha n i m a t i o ni sah u g e w o r k l o a d f l a s ha n i m a t i o nc a no n l yd i s p l a yt h es t r o k c si nt h e 丘) ( e dw a y i tw a sn o tag o o ds o l u t i o n t h i sp a p e rs t u d i e st h ec h i n e s ec h a r a c t e rg l y p hd e s c r i b i n gt e c h n i q u e a n de 丑y p hd r a w i n gt e c h n i q u e ;d e v e l o ps o f t w a r et h a tc a nd r a wt h eo r d e ro f s t r o k eo fc h i n e s ec h a r a c t e r t h i ss o f t w a r ep r o v i d e su s e l sac o n v e n i e n t m e t h o dt of m dt h er i g h to r d e ro fs t r o k e so fc h i n e s ec h a r a c t e r sa n d d i s p l a ya r b i t r a r yp a r t so fc h i n e s ec h a r a c t e r f i r s t , t h i sp a p e ri n t r o d u c e st h eg d i + t e c h n o l o g ya n di t sn e w f e a t u r e s b a s i n g0 1 1g d i + p a t ht e c h n o l o g ya n dt h ef e a t u r eo ft w of o n t t y p e s ( f a n gs o n ga n dk a i ,t h e s et w of o n t sd e s c r i b et h es t r o k e so fe a c h c h i n e s ec h a r a c t e rf o rt h eg l y p h as t r o k ei sac l o s e dc o n t o u rg r a p h s ) ,t h e i n f o r m a t i o no fs t r o k e so f c h i n e s ec h a r a c t e r sb ea d d e dt oac o n t o u rp a t ht o g d i + o n ec h i n e s ec h a r a c t e re q u i v a l e n tt oap a t ho b j e c t ,o n ep a t hc a n c o n t a i nm a n ys u b - p a t he q u i v a l e n t st oas t r o k e b yt h ec o n t r o lo fp a t ha n d s u b - p a t h ,c o m p l e t et h ed r a w i n go f s t r o k e so f c h i n e s ec h a r a c t e r s e c o n d l y , t h i sp a p e ri n t r o d u c e st h ec o mt e c h n o l o g y i no r d e rt o s h a r i n gt h es o f t w a r e ,c o m i sav e r yg o o di d e a w eo n l yn e e dt or e g i s t e r t h ec o m p o n e n ta n dc o n f i g u r et h es e r v e r t h ec o m p o n e n ti st r a n s p a r e n tt o ,t h ec u s t o m e r c o m p o n e n ti n t e r f a c eu s e dt os a t i s f yu s e r sn e e d s ,a n dt h e s p e c i f i cf u n c t i o n sc o n t a i n e di nt h ei n t e r n a lc o m p o n e n t s a c c o r d i n gt ot h e n e e d s ,w ed e s i g n e do n ei n t e r f a c e ,i n c l u d i n gt h r e eb a s i cf u n c t i o n s ;t 1 1 e y w e r ed i s p l a y i n gt h eo r d e ro fs t r o k e so fc h i n e s ec h a r a c t e r s ,m o d i l y i n g o r d e ro fs t r o k e so fc h i n e s ec h a r a c t e r s ,a n dd i s p l a y i n gc h i n e s ec h a r a c t e r s c o m p o n e n t s f i n a l l y , b e c a u s et h ef o n tt y p e s :f a n gs o n ga n dk a is t r o k e sf a i l e dt o p r e s e r v et h es e q u e n c eo r d e ro fs t r o k e so f c h i n e s ec h a r a c t e r s ,a n dw ec a n a d j u s tt h eo r d e ro fs t r o k e sb a s i n gt h er e q u i r i n g i nt h es o f t w a r ew eu s e a c c e s sd a t a b a s et o k e e p i n ga d j u s t m e n t s i n f o r m a t i o n t h i sp a p e r d e s c r i b e da d od a t aa c c e s st e c h n o l o g y t h u s ,p u r p o s e l ya n de x p e r i m e n t a l l yt h i sp a p e rs t u d i e st h ec h i n e s e g l y p hd e s c r i p t i o nt e c h n i q u e ,t h es t u d ys u m m a r i z e t h ep r o b l e m st h a te x i s t i nt h ed e v e l o p m e n tp r o c e s sa n dp r o s p e c t sf u r t h e rw o r k k e yw o r d st h eo r d e ro fs t r o k e s ,p a t h , c o m p o n e n t , a d o 内蒙古师范大学硕士学位论文 第一章绪论 1 1 课题的研究意义、目的 汉字是汉语书写的最基本单元,是承载文化的重要工具,因而汉字在历史上对中 华文明的传播起到了重要作用,并成为东南亚文化圈的内在纽带。狭义地说,它是汉 族的文字;广义地言,它是汉字文化圈共同的文字【1 1 。 近代科技的发展,使得计算机成为处理信息的主要工具,人们一开始用计算机 处理汉字的时候,对每个用到的汉字进行编码,这种方式解决了用计算机输入、显 示汉字的问题。但是近代计算语言学的发展,对汉字的字、词、短语、篇章的理解 研究都出现了瓶颈,使得人们不得不追溯到中文的根源汉字上来。随着计算机网 络的发展,人们希望在网络上传输、显示汉字,但现在的整字编码方式已经不能满 足人们对汉字的处理需求。这种编码方案的不足主要表现在以下几个方面: ( 1 ) 排序、相似度计算和字形检索问题没有从根本上的解决。首先,每一个汉 字的字形都是不一样的,但是按照音序和笔画的方法都没有办法对汉字进行彻底的 排序。其次,对于错字的处理,人们希望能够找到与错字字形相似的正字,以更正 按照字形录入、通过字形识别软件进入计算机的错字【4 】;再次,现在的汉字检索都 是根据汉字拼音进行的,因为汉字的同音字比例很大,因而这并不是一个有效的汉 字检索( 输入) 方法:还有不知道读音就没办法录入的缺点。虽然五笔字形的方法在 一定程度上可以解决这个问题,但是这种方法的缺点是学习起来困难,并且是在常 用字的字符集范围内进行检索。 ( 2 ) 生僻字在网络上无法输入、显示。汉字是一个庞大的字符集,汉字字体也 在不断的更新中,这就给网络传输带来了不便,有些生僻字可能客户端字体库中没 有收录,那么也就无法在客户端正确的显示这个汉字。汉字编码总是不够,它是一 个开放的大字符集合,总有新的汉字添加到汉字集中来。虽然汉字编码工作不断在 进行,但总是落后于应用。这中间要经过层层的审批,计算机的使用者急切的希望 找到立即解决问题的方法,汉字的造字法也只是部分的解决了这个问题,并且由于 汉字字形描述技术研究 新造的汉字使用的是汉字编码用户区,还可能出现不同用户在同一个编码上造了不 同的汉字的问题。 ( 3 ) 错字无法录入。现在的输入法都是根据现有的字库进行录入的,所以不存在 错字的问题。而现实中人们书写汉字的时候却常常的写错字,这些错字是汉字教学中 ( 特别是教小学生、外国人写汉字过程中) 经常遇到的。这些错字对于研究汉字出错 的规律,进一步促进汉语教学的发展很有帮助,可是这些写错的字却没有办法用计算 机处理。 ( 4 ) 汉字部件无法显示。现有的字符编码标准仅对部分汉字部件进行了编码,用 户也只能对这些已经编码的汉字部件进行检索、显示。而对于那些没有编码的汉字部 件却没有办法处理。例如,“练”字的右部在汉字编码中没有收录。 ( 5 ) 汉字笔顺信息没有方便的显示、检索工具。只有少部分汉字字典收录了汉字 笔顺,笔画,并且不能在计算机和网络上进行查询、传输;少数的人用f l a s h 编程的 方法显示汉字笔顺,但是这种方法的缺点是工作量大,并且只能按照固定模式显示, 不能显示汉字的任意部分。 基于以上事实,汉字的问题还有许多需要解决,这一切问题的解决都需要对汉字 字形进行进一步描述,从汉字的笔画、构件一级对汉字分别进行研究为进一步深层 处理汉字奠定基础。本文通过研究汉字字形描述和绘制技术,开发一个能在网络上自 动绘制汉字笔顺和部件的组件。 1 2 国内外研究现状 。 1 2 1 语言学界 关于汉字字形的研究,过去的工作主要集中在语言学界,研究汉字字形的演化。 从应用的角度进行研究,有上海交通大学出版的汉字信息字典,详细描述了7 7 8 5 个 汉字的结构和部件。在此基础上,国家于1 9 9 7 年颁发了汉字部件标准,穷尽式地列 出了国家标准通用多八位编码字符集( u c s ) 中2 0 9 0 2 个汉字的部件表,这2 0 9 0 2 个 汉字已经根据这些部件进行了逐个拆分【3 1 。这些工作为汉字字形描述提供了基础,但 是从汉字字形描述的应用需求看有两方面的不足:一是只有复合字的结构描述,并未 提供独体字或部件的结构描述:二是该标准的汉字结构拆分主要是从汉字字形的演变 过程的角度( 即。字理的角度) 出发的,这种角度同软件或人识别的角度( 即感知的 2 内蒙古师范大学硕士学位论文 角度) 并不完全相同。软件或人在认字的时候,把汉字看成平面图形,同字理并无必 然联系【射。 1 2 2 汉字字形描述语言 国内外还有许多学者对汉字进行了形式化描述,从汉字识别和字形设计角度研究 汉字字形的形式化描述方法。目前国内外体系比较完整的汉字字形描述语言 ( c c d l - c h i n e s c c h a r a c t e r d e s c r i p t i o n l a n g u a g e s ) 主要有5 种: 中文文献处理语言c p l ( c h i n e s ed o c u m e n tp r o c e s s i n gl a n g u a g e ) c p l 是由中国台湾“中央研究院信息技术研究所”文献处理实验室研发的汉字描 述语言。是基于b i 9 5 码和汉字部件的字形描述系统。c p l 把部件( 字根) 看成汉字 的构形单位,汉字是由有限的字根构成的,汉字的组合类型有层次结构及平面结构两 种层次结构的字是由部件分作若干层次逐步累加而构成的。平面结构的字是由三个 以上的部件一次性组合形成的描述层次结构的字形时,必须标示出部件间的连接方 式;这些连接方式有横连、直连及包含三种。无法以横连、直连或包含方式连接的部 件,一律视为字根,不再拆分川。 c p l 描述符号包括压l 、会、三个连接符号,分别表示横连、直连、及包含。 “鞭”的字形结构表达成“鞭= 革丛便”,其中。革丛便”称为构字式。同理,。童= 立公里”、“越= 走卓”构字式是用来表达层次结构的字形。至于平面结构的字形, 可用部件序列来表达。部件序列是将字形的构成部件,以书写顺序排列使用部件序 列时,必须在部件的前后加上起点标示回及结束标示口,如“牖翊片户甫口一。 构字符号除了连接符号及起止标示外,还有方便符号方便符号可用来表达相同 部件的组合,包括二、三或四个相同部件横连( o o 、一,- - ) ,二、三或四个相同部件 直连( 8 、9 、1 ) ,三个相同部件呈品状排列( 晶) ,四个相同部件呈i :i :状排列d 竭。方 便符号可单独使用,使用时必须放在部件的前面。如。鲭= 螂”、。寮= 芍束”,“盛= 晶i i 官一、“皴瑚火”;方便符号也可用在构字式或部件序列中,如。里袋田会土一 ( 2 ) 表意文字描述序列i d s ( i d e o g r a p h i cd e s c r i p t i o nc h a r a c t e r s ) u n i c o d c 4 0 标准中定义了1 2 个表意文字描述符i d c 。u 国 j 墨鲁i 剑i d 汉字字形描述技术研究 r r - f 一+ 1r i 州? 1r 1 型 宴蔓 :l ji 垒雹,分别表示左右结构、上下结构、左中右结构、上中下结构、 内包含、下包含、上包含、左包含、左上包含、右上包含、左下包含、覆盖结构 u n i c o d e 标准已经为很大范围内的汉字编码,所以用i d s 可表示绝大多数未被编码的 “缺字 【5 1 ( 3 ) 汉字数学表达式 汉字数学表达式是由张听中、夏莹等人提出的汉字数学表达方法它将汉字表示 成由汉字部件作为操作数、运算符号为部件间位置关系的数学表达式。选定了5 0 5 个部件,部件可通过位置运算合成汉字定义了6 种位置运算符号:l r 、u d 、1 d 、1 u 、 1 1 1 、w e ,依次表示左右,上下,全包含,左下,左上,右上等关系【6 】 7 】如图1 1 所示: y x 图1 - 1 汉字数学表达式模型 ( 4 ) 字符描述语言c d l ( c h a r a c t e rd e s c r i p t i o nl a n g u a g e ) c d l 是为精确地描写和显示所有中日韩越( c j k v ) 汉字“字形”而设计。基于 u n i c o d e 、x m l 语言和少量熟知的汉字特征,使用不超过5 0 种的笔画类型集构造了 几乎所有现行印刷体汉字1 8 1 汉字“行”的c d l 描述,它被分解成部件“彳”和“亍”,部件的位置用二维坐标 点给出。 4 内蒙古师范大学硕士学位论文 o m pc b a r = ”彳“p o i n t s = 。0 ,04 0 ,1 2 8 ”胁 c o m pc h a i 一- ”亍“p o i n t s = “6 0 ,1 21 2 8 ,1 2 8 “胁 部件“彳”的笔画类型和特定坐标的c d l 描述: s t r o k et y p e = “p ”p o i n t s = 。1 2 8 ,3 80 ,8 3 ” s t r o k et y p e = ”s ”p o i n t 孽= 8 6 ,7 08 6 ,1 2 8 “胁 部件和笔画组合的c d l 描述例如,汉字“太”被描述为部件“大”( 本身就是一个 字,它也拥有自己的描述) 和一个笔画类d ( 点) c d lc h a r = ”太哆 c o m pc h a r = - ”大1p o i n t s = 。0 ,01 2 8 ,1 2 3 “胁 s 仃o k et y p e = ”d 。p o i n t s = 4 5 ,9 86 6 。1 2 0 “胁 。 笔画元素 有一个t y p e 属性,它的值就是c d l 所定义的5 0 多个笔画类别 的字母代号图l - 2 列举出了c d l 中用到的基本笔画,本文已介绍了。矿( 撤) 等几 个最复杂的一个笔画类是冠矿,即横折折折钩,如“乃”的折笔 一一一, jj 、 lll 叮 f ,jl 、 。z1z 1 八 lll 厶厶1 71 l 1 与乡 圉i - 2 c d l 基本笔画类别举饲 ( 5 ) h a n g l y p h 汉字分层描述语言 由香港b a p t i s t 大学c a n d yl k y i u 和w a iw o n g 提出了一种分层表示汉字的语言 h a n g i y p h ,这种语言把汉字分成十种结构,可用于表示笔画一级和部件一级构成汉 字的方法【9 】。h a n g l y p h 中的汉字结构如图1 - 3 所示: 汉字字形描述技术研究 操作数如表1 - 1 所示: 图1 - 3h a n g l y p h 层次表达式模型 表i - ih a n g l y p h 操作符 n 啪es y m b o le x a m p l e t o p - b o t t o m 主飞昌早李 l e 丘r i g h t 左右 i 明他你 f u l l ye n c l o s i n g 全包 o 回囤困 h a l fm l o s i n g 半包t 凶圈臣 咖穿插 + 十半木 h a n g l y p h 中的汉字表达式使用的是后缀表达式,当结构关系是半包关系的时候, 可以在半包符号后加上一个o 7 的数字,表示半包关系的类型。0 表示上左下三包,7 表示左上半包。这种汉字描述语言的缺点是许多多次交叉的汉字笔画没有办法描述。 c p l 、i d s 、汉字数学表达式、c d l 和h a n g l y p h 都是从构字的角度对汉字进行 描述,这些汉字描述语言为汉字的计算机处理提供了宝贵的依据。当然他们也都存在 着自己的缺陷。有待于进一步的研究。 1 2 3 汉字笔顺的研究 汉字笔顺是人们在书写汉字的时候所遵循的笔画顺序。语言文字是有标准规范 的。这不单是为了字写得工整规范,更是为了与他人更好的交流。进入信息化时代, 识字、写字符合规范就更加重要了,它有利于电子通讯和计算机处理汉字。关于汉 字笔顺信息的资料有小学生标准字典,例如商务印书馆的小学生标准字典共收录了 6 内蒙古师范大学硕士学位论文 4 5 2 3 个单字的笔顺信息。另外,近几年笔顺信息的电子化产品也开始出现。他们大 都以f l a s h 动画的方式制作汉字笔顺软件。例如:上海市水丰路小学的教学资源里收 集了2 5 0 1 个汉字的笔顺、笔画。汉字笔顺精灵,提供了4 0 0 多个汉字的笔顺信息。 它们的优点是形象逼真,有每个汉字每一笔的运笔方向。缺点是制作f l a s h 的工作量 巨大,占用大量的存储空间,笔顺只能按照预先制定好的方式显示。从数量上来说他 们分别提供了2 5 0 1 个和4 0 0 个汉字的笔顺信息,而常用的汉字就有3 0 0 0 多个 以上是汉字描述技术的研究现状,到目前为止还没有成熟的汉字绘制技术,本文 的工作就是利用g d i + 的路径技术绘制汉字笔画。 1 3 论文主要内容 本文的重点是应用g d i + 的路径技术、组件技术、数据库存取技术实现一个能在 网络上自动绘制汉字笔画和部件的软件。论文包括以下几个主要内容: n ) g d i + 技术及其新特色 ( 2 ) c o m 组件技术 ( 3 ) a d o 数据库存取技术 ( 4 ) 汉字笔画、部件自动绘制软件的设计与实现 7 汉字字形描述技术研究 第二章6 d i + 技术 g d i 是w i n d o w s 提供给应用程序的编程接口,使得编程人员不需要与显示器、 打印机等图形设备打交道。g d i + 是g d i 的改进,它是基于类的应用程序编程接口。 g d i + 已包含在w m d o w sx p 和w m d o w n e t 服务器系统中 g d i + 这种新型的图形设备接口与g d i 相比较,一方面增加了新的功能如梯度刷 ( g r a d i e n t b r u s h e s ) 和独立路径对象等,这些新的功能能够让用户创建全新的用户桌面体 系,能够轻易地完成二维或三维的图形处理,为桌面带来一种数字化的图片;另一方 面修改了编程的模式,新的模式使用起来更加方便,实用性更强【l o l 。 2 1 g d i + 的新功能 2 1 1 渐变画刷 画刷是用来填充控件、窗口、区域的g d i 对象,原有的g d i 画刷仅支持单色的 画刷,如果想画一个在阳光照射下的矩形物体,通过g d i 的画刷是不能做到光线强 弱的立体效果的,g d i + 的画刷改变了这一点,可以设定一个从左到右逐渐变亮的画 刷,让这个画刷去填充矩形,立体效果立竿见影。 2 1 2 独立的路径对象 独立的路径对象是g d i + 的一项新特色,路径让g d i + 中的几何图形连接更加自 然。应用程序使用路径来绘制形状的轮廓;填充形状内部和创建剪辑区域。在g d i + 中绘图是由图形对象来完成的,并且可以创建多个图形对象进行绘图,多个图形对象 产生的路径信息是相对独立的,而且不会被新的绘图操作所覆型】。 2 1 3 矩阵对象 g d i + 提供了m a t r i x 对象,它是一种可以使变形( 旋转、平移等) 简易灵活的强大 工具。矩阵对象与所变形对象联合使用。使用矩阵除了可以对坐标位置信息进行变换 以外,还可以对色彩的空间信息进行变换 2 1 4 a j p h a 通道合成运算 8 内蒙古师范大学硕士学位论文 g d i + 支持的a l p h a 混合,可以指定填充颜色的透明度。不仅运用在图片的合成 方面,还应用于画笔、画刷与目标图形区域之间。这种技术在g d i 中实现起来相当 困难,但在g d i + 中这种效果实现起来相当简纠】。 2 i 5 多格式图片支持 g d i + 提供i m a g e ,b i t m a p 和m e t a f i l e 类,可以用不同的格式加载、保存和操作 图像。g d i + 支持b m p 、g i f 、2 p e g 、e x i f ,p n g 、t i f f 、i c o n 、w m f 、e m f 共九 种常用的w m d o w s 图像格式。 2 2 编程模式的改变 g d i + 编程模式对g d i 的编程模式做了比较大的改变,主要体现在以下几个方面 旧i : 2 2 1 设备上下文和绘图平面 设备上下文是w m d o w s 使用的一种结构,用于存储与特殊显示设备的功能和指 定如何在该设各上绘制项目的属性相关的信息。例如,如果想要在窗口中绘制一个矩 形,首先得取得设备环境,然后让设备环境去执行具体操作。使用g d i + ,不需要再 使用句柄或设备上下文,而是只需创建一个g r a p h i c s 对象( 绘图平面) ,然后用熟悉 的面向对象样式g r a p h i c s o b j e e t d r a w l i n e ( 参数) 调用其方法。正如设备上下文是g d i 的核心,g r a p h i c s 对象是g d i + 的核心。 g r a p h i c s 对象与屏幕上的特定窗口关联,并具有指定如何绘制项目的属性( 如 s m o o t h i n g m o d e 和t e x t r e n d e r i n g i - i i n t ) 。g r a p h i c s 对象不受钢笔、画笔、路径、图像 或字体的约束,这与设备上下文不同。例如,在g d i 中,在使用设备环境绘制直线 之前,必须调用s e l e e t o b j o e t 函数将画笔对象与设备环境关联起来,这称为将画笔“选 入”设备环境。而且,在设备环境中,只有一支画笔是可以使用的。所有在此设备环 境中绘制的直线都将使用该画笔,直到选择了不同的画笔为止。在g d i + 中,可以将 画笔对象当作参数传递给g r a p h i c s 对象的d r a w l i n e 函数。在d r a w l i n e 函数的多次 调用过程中,可以使用不同的画笔对象绘制不同外观的线条,而用不着将g r a p h i c s 对象与给定的画笔对象相关联。 g r a p h i c s 对象,可以通过窗体句柄、i m a g e 对象、b i l m a p 对象、设备上下文指定句 9 汉字字形描述技术研究 柄创建g r a p h i c s 对象。还可以为控件创建g r a p h 5 c s 对象如果从窗口句柄中创建 g r a p h i c s 对象,那么绘图平面就是窗口。下例是用b i t m a p 类创建g r a p h i c s 对象的代 码。 b i t m a pb i t m a p ( 1 0 0 ,1 0 0 ,p i x e l f r o m a t 4 8 b p p r g b ) ;建立b i t m a p 对象 g r a p h i c sg r a p h i c s ( & b i t m a p ) ;建立g r a p h i c s 对象 2 2 - 2 方法重载 , g d i + 的许多方法都是重载的,这给函数调用带来了方便。可以用不同的参数完成 相同的绘图功能。 2 2 3 绘制和填充的不同方法 绘制轮廓和填充图形内部时,g d i + 要比g d i 更灵活。g d i 有一个r e c t a n g l e 函数, 可一步完成绘制轮廓和填充矩形内部。轮廓由当前选定的钢笔绘制,而内部则由当前 选定的画笔来填充。g d i + 使用不同的方法来绘制轮廓和填充矩形内部。 g r a p h i c s 类的d r a w r e c t a n g l e 方法将p e n 对象作为其参数之一,而f i l l r e c t a n g l e 方 法将b r u s h 对象作为其参数之一。 2 2 4 构造区域 g d i 提供几种用于创建区域的函数:c r e a t e r e c t r g n ,c r e a t e e l l p t i c r g n , c r e a t e r o u n d r e e t r g n , c r e a t e p o l y g o n r g n 和c r e a t e p o l y p o l y g o n r g n 。您或许希望g d i + 中的r e g i o n 类也有类似的构造函数,将矩形、椭圆、圆角矩形和多边形作为参数接收, 但事实并非如此g d i + 中的r e g i o n 类提供一个接收r e c t a n g l e 对象的构造函数和另 一个接收g r a p h i c s p a t h 对象的构造函数。如果想基于椭圆、圆角矩形或多边形构造区 域,可以通过创建一个g r a p h i c s p a t h 对象( 如包含椭圆的对象) ,然后将其传递至r e g i o n 构造函数来轻松实现。 2 3 路径 2 3 1 路径与子路径 路径表示一系列相互连接的直线和曲线。独立的路径对象是g d i + 的一项新特色, 路径让g d i + q b 的) i , 何图形连接更加自然。g d i + 的个路径对象( g r a p , h i c s p a t h ) 1 0 内襞古师范大学硕士学位论文 是以图形( f i g u r e ) 为元素的一个图形序列。g d i + 中使用g r a p h i c s p a t h 类来表示路径, 路径的定义可以通过以下三种构造函数方式来完成0 3 : g r a p h i c s p a t h ( f i l l m o d e ) g r a p h i c s p a t h ( p o i m p o i n t s ,b y t e + t y p e s , n h c o t m t ,f i l l m o d e f f l l m o d e ) g r a p h i c s p a t h ( p o i n t f + p o i n t s ,b y t e + t y p e s , n t c o t m t ,f i l l m o d e f d l l v l o d c ) 其中参数含义分别是: f i l l m o d e :填充模式。该参数为f i l l m o d e 枚举列出的两个成员f i l l m o d e a l t e m a t e , f i l l m o d e w r m d i n g 之一 p o i n t s :定义子路径的点 路径中的每个图形既可以是封闭的,也可以是开放的这里的图形是指若干几何 线条( 直线、弧线、贝塞尔曲线等) 的组合,可以被画出轮廓线和被填充。路径对象 建立后,可以通过向路径中追加线条或图形来修改路径可以在路径建立之后通过向 路径追加线条或几何图形的方式实现c n - a p h i c s p a t h 类提供了以下成员函数在路径中 添加直线,曲线、矩形等对象。 a d d a m 添加弧线 a d d b e z i e r 、a d d b e z i e r s 添加贝塞尔曲线 a d d c l o s e d c u r v e 添加封闭曲线 a d d s t r i n g 添加字符串 路径中的每个图形也可被看作路径,称为子路径。添加到路径中的一个封闭图形 自然成为一个子路径也可使用s t a r t f i g u r c 和c l o s c f i g u m 成员函数来约束子路径的 范围,s t a r t f i g u r e 在不封闭当前图形情况下开始一个新的子路径,c l o s e f i g u r e 将当前 图形封闭后开始新的子路径。子路径实质也是一个路径对象可以把一个复杂的不规 则图形对应为路径,再通过子路径对其分解处理。 2 3 2 子路径的操作 g d i + 的g r a p h i c s p a t h i t e r a t o r 类完成了对路径的一个或多个子路径的描述、管理、 测试等功能。c n a p h h i c s p a t h l t e r a t o r 能够从给定的路径中进行多种与子路径有关的操 作,这些操作都是通过g r a p h i c s p a t h l t e r a t o r 类的成员函数( 或属性) 来完成的以下 是g r a p h i c s p a t h i t e r a t o r 类的几个重要的成员函数。 汉字字形描述技术研究 s u b p a t h c o u n t 获取字路径总数 r e w i n d 复位字路径信息,回到开始位置。 n e x t s u b p a t h 获取下一个字路径 2 4 字体与字体系列f o n t 2 4 1t r u e t y p e 字体文件结构 目前汉字字库采用的主要是静态字库的技术存储汉字字形数据,即每个汉字字形 数据( 字模) 预先设计好存入库中,只能通过汉字编码存取字模,w i n d o w s 系统采用 的t r u e t y p e 字库就是采用的这种方法,对t r u e t y p e 字体中汉字的访问机制如图2 1 所 示【1 4 】【1 5 】【1 6 1 1 7 】: 。c tp1 0 c a 由如 c o d e , i n d e x h u t e x , :o f 妇t 4 p l u + 5 5 4 砷1 - p r _ t 甄 堋 ( 啊) l _5 5 4 a 1 6 舒一 pp p 1 6 6 7 0 - j j 护 “v p c o c t e i 皿d 口pj : n u e t y p e 字模库一 j 图2 - l t r 研字形数据结构 c m a p :字符代码到文字内部序号c g l y p hr d ) 的映射表 l o c a :字符轮廓数据位置索引表。 g l y p h :字形轮廓数据表 t r u e t y p e 技术就是采用“c m a p l o c a ”、“i o c a - - g l y f ”两级映射机制对汉字的 字型进行存取的。 w i n d o w s 要想对t r u e t y p e 文件中的字形数据读取一般有两种方法:( w i n d o w s 中 1 2 内蒙古师范大学硕士学位论文 t m e t y p e 字形数据的存取技术 ( 1 ) 直接从t r u e t y p e 文件中读出,再由程序根据t m e t y p e 规范进行解释、转换为 易于处理的格式,但是这种方法比较复杂。 ( 2 ) 将字库装载进操作系统,利用操作系统内含的t m e t y p e 解释器对所读数据进 行解释,再对所获结果进行变换处理,以获取所需的信息。 本系统采用的是第二种方法,在g d i + 中t r u e t y p e 轮廓数据的提取可以通过添加 路径的方法来实现。国家标准字符集“楷体_ g b 2 3 1 2 ”和“仿一g b 一2 3 1 2 ”字库中 的字型数据可以分解成笔画轮廓,针对数据的这种存储方式,可以对汉字笔画分别存 取处理、显示。 2 4 2g d i + 中的字体 g d i + 中将具有相同字样,包括不同风格的字体称为字体系列( f o n t f a m i l y ) 字体 从其系列中获得的名称、重量( 如粗体、规则或加亮) 以及风格。g d i + 使用四种风 格来形成字体系列:规则( r e g u l a r ) 、黑体( b o l d ) 、斜体( i t a l i c ) 、粗斜体( b o l di t a l i c ) 【1 3 1 。 一般情况下,在g d i + 进行文本输出之前需要构造一个f o n t f a m i l y 对象和一个 f o n t 对象。f o n t f a m i l y 对象有三个构造函数,f o n t 对象1 3 个构造函数。下面是具体 使用字体的实例: f o n t f a m i l yf o n t f a m i l y n e wf o n t f a m i l y ( 楷倒k _ g b 2 3 1 2 ) ; f o n tf o n t = n e w f o n t ( f o n t f a m i l y n e w ,1 6 ,f o n t s f l y l e r e g u l a z ,g r a p h i c s u n i t p i x e l ) 祝字字形描述技术研究 第三章组件技术 3 1 组件技术的产生和发展 软件开发之初人们使用的是面向过程的程序设计方法,随着所解决问题规模的扩 大,人们开始采用面向对象的程序设计方法。由于现阶段面向对象的程序设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论