在图形界面上显示文字的方法和系统的制作方法

文档序号:2567226阅读:174来源:国知局
专利名称:在图形界面上显示文字的方法和系统的制作方法
在图形界面上显示文字的方法和系统
技术领域
本发明涉及计算机技术领域,尤其是计算机技术中在图形界面上显示文字 的方法和系统。
背景技术
计算机中图形界面的使用大大提高了人们在操作计算机时的交互性。在图 形界面中,除了图形本身外,通常也需要在图形上显示文字,以表达无法或很 难用图形表示的意思。例如在游戏平台的界面中显示各个用户的用户名就需要 在图形界面中显示文字。
传统的图形界面中显示文字需要依赖字库,图形界面启动时,会加载对应 的字库,把字库纹理保存在内存中。通常, 一个字库就是一个位图丈件,位图 中保存着字库中文字的紋理。当需要绘制某个字时(假设是字"腾"),就会根 据"腾"字的字符编码,转换为对应一个坐标,该坐标就是"腾"字在位图里 面的坐标,然后引擎会根据该坐标从字库的紋理取出"腾"字的紋理,然后将 该紋理绘制在屏幕上,这样就在屏幕上写了一个"腾"字,实现了在图形界面 上显示文字。
由于在图形界面中显示文字需要依赖字库, 一个字库文件通常都会好几兆, 而且字体越大,相应的位图也越大,字库文件也就越大,导致釆用图形界面的 软件占用存储空间较大。又因为是从字库文件里面取紋理进行写字,所以字库 文件里面的字体和字号决定了能绘制的字体和字号,需要绘制几种字体和字号, 就需带上对应的几个字库文件,导致可使用的字体和字号数量有限。并且,在 启动时需要加载字库,字库文件多而且较大的话,会对启动速度造成影响,而 通常在一次使用中不会写很多不同字,所以字库文件里面的大部分纹理都没用 到,造成了内存的浪费。
发明内容
有鉴于此,有必要提供一种提高启动速度的在图形界面上显示文字的方法。 此外,还提供了 一种提高启动速度的在图形界面上显示文字的系统。
一种在图形界面上显示文字的方法,包括以下步骤接收需要显示的字符 编码及字体信息;查找该字符编码对应的元素;创建与该元素对应的对象;依 据所述字体信息写字获得紋理,将所述的紋理赋给所述对象;将所述紋理绘制 到屏幕上。
一种在图形界面上显示文字的系统,包括 输入模块,用于接收需要显示的字符编码及字体信息; 存储模块,用于存储与所述字符编码对应的元素;
处理模块,与所述输入模块及存储模块相连,用于根据所述字符编码及字 体信息在图形界面上显示文字,所述处理模块包括
对象创建单元,用于创建与所述元素对应的对象;
图形设备接口单元,用于依据所述字体信息写字获得紋理并将所述的纟文理
赋给所述对象;
绘制单元,用于将所述紋理绘制到屏幕上。
上述在图形界面上显示文字的方法和系统中,根据字体信息写字获得紋理, 通常,操作系统自带有一些字体,根据这些字体再写字获得紋理,将紋理绘制 到屏幕上进行显示,不需要加载字库,可以提高启动速度。


图1为第一实施方式的在图形界面上显示文字的方法的流程图; 图2为第二实施方式的在图形界面上显示文字的方法的流程图; 图3为在图形界面上显示文字的系统的模块图。
具体实施方式

在以下实施方式中,根据字体信息写字获得紋理,通常,操作系统自带有 一些字体,根据这些字体再写字获得紋理,将紋理绘制到屏幕上进行显示,不
5需要加载字库,可以^^高启动速度。
一种在图形界面上显示文字的方法,如图l所示
步骤S102,接收需要显示的字符编码及字体信息。需要在图形界面上显示 的文字在计算机内是以字符编码的形式进行传输和存储的,在将其显示到图形 界面上之前需要根据该文字的字体信息生成紋理,即与字体大小对应的位图, 便于在图形界面上显示。字体信息可以是默认的字体信息,也可以用户自定义 的字体信息。
步骤S104,查找该字符编码对应的元素。本实施方式中,字符编码采用统 一码(UNICODE )。因为每个UNICODE字符编码占用的是16位,所以可以将 一个UNICODE字符编码的高8位区域的值对应到数组的0~255行,低8位区 域的值可以对应到数组的0~255列,这样,每个UNICODE字符都可以唯一对 应到数组的某个元素。当接收到一个需要显示的UNICODE字符时(假设为 "腾"),"腾"字对应的UNICODE编码为0X817E,其高8位转为十进制是129, 低8位转为十进制是126,所以"腾"字就对应上面数组的第129行第126列元 素(下面称为A元素)。
步骤S106,创建与该元素对应的对象。所述对象包含字体信息部分、紋理 信息部分和指向其他对象的指针。对象刚创建时,字体信息部分、紋理信息部 分和指向其他对象的指针都是空的。对象创建后,所述字体信息赋给字体信息
部分,例如,需要显示的字体为宋体的"腾"字,则对象的字体信息部分即保 存宋体的代码。
步骤S108,依据所述字体信息写字获得紋理将所述紋理赋给所述对象。通 常,操作系统自带有一些字体,根据这些字体再写字荻得紋理,将紋理绘制到 屏幕上进行显示,不需要加载字库,可以提高启动速度。具体地,步骤S108分 为如下步骤
在内存设备内容(Device Content)选用所述字体信息用图形设备接口 (Graphics Device Interface)的格式化文本函数(DrawText)写字,获得文字的纟丈 理。例如在内存设备内容选用宋体用图形设备接口的格式化文本函数写"腾" 字,获得"腾"字的紋理。然后,根据所述字体信息中的字体大小创建该字体大小的紋理,例如四号 字,則创建四号字大小对应的紋理,此时紋理是空白的。
将内存设备内容上已经写好的字的紋理拷贝到所述创建的紋理上。因为该 内存设备内容是只创建一个的,需要反复用到,下次用到时会先清空该内存设 备内容的内容,所以写了之后需要拷贝到另外新创建的紋理上。
将拷贝到创建的紋理上的字的紋理赋给对象的紋理信息部分。
步骤S110,将所述紋理^^制到屏幕上。可以用DirectDraw的方法将该紋理 绘制到屏幕上,而DirectDraw绘制紋理是很高效的,也就是说,实现了在图形 界面上显示文字。
进一步地,为了提高写字的速度,可以保存已经写好的文字的纟文理。在字 符编码对应的元素中设置多个对象,每个对象对应该字符编码,即该文字的一 种字体信息。如图2所示
在步骤S104之后,还包括判断所述元素的指向是否为空的步骤(步骤S202 )。 如果所述元素的指向为空,则执行步骤S106,创建与该元素对应的对象。元素 的指向为空表明该元素对应的文字还未被使用过,即还未获得任何该文字的紋 理。在步骤S106中创建与该元素对应的对象后,需要将该元素指向该创建的对 象,表示该元素对应的文字已经使用过。如果所述元素的指向不为空,则进入 步骤S204。
步骤S204,判断与该元素对应的对象中是否存在与所述字体信息相同的对 象,如杲不存在,则执行步骤S106,创建与该元素对应的对象的。如果存在, 则直接执行步骤S110,将所述紋理绘制到屏幕上。判断的方式为,将需要显示 的文字的字体信息与对象中的字体信息部分的字体信息进行比较,以判断是否 相同。由于同一文字通常可以有多种字体,因此,同一文字也可能创建多个对 象。对象中的指向其他对象的指针即可以用于形成链表。举例来说,元素可以 指向第一个创建的对象,第一个创建的对象中的指向其他对象的指针可以指向 第二个创建的对象,依此类推。在判断的过程中,可以依次判断需要显示的文 字的字体信息与元素已有对象中的字体信息部分的字体信息是否相同,如果相同,则停止判断,直接执行步骤S110,如果与所有已有对象中的字体信息部分
的字体信息都不相同,则执行步骤S106,创建与该元素对应的对象的。
上述方法可以进一步提高速度,因为步骤S108通常需要较多的计算时间。
此外,还提供了一种在图形界面上显示文字的系统。如图3所示,在图形 界面上显示文字的系统300包括输入模块310、存储模块320及处理模块330。 输入模块310用于接收需要显示的字符编码及字体信息。 存储模块320用于存储与所述字符编码对应的元素。
处理模块330与输入模块310及存储模块320相连,用于根据所述字符编 码及字体信息在图形界面上显示文字。处理模块330包括对象创建单元332、图 形设备接口单元334、绘制单元336及判断单元338。
对象创建单元332用于创建与所迷元素对应的对象。对象创建单元332创 建的对象包含字体信息部分、紋理信息部分和指向其他对象的指针。
图形设备接口单元334用于依据所述字体信息写字获得紋理并将所述的紋 理赋给所述对象。图形设备接口单元334依据所述字体信息写字获得纹理具体 为在内存设备内容选用所述字体信息用格式化文本函数写字;创建该字体大 小的紋理;将内存设备内容上已经写好的字的紋理拷贝到所述创建的紋理上; 将拷贝到创建的紋理上的字的紋理赋给对象的紋理信息部分。对象创建单元332 还用于将包含所述紋理的所述对象存储到所述存储才莫块320中与所述元素对应。
绘制单元336用于将所述紋理绘制到屏幕上。
判断单元338用于判断所迷元素的指向是否为空,如果所述元素的指向为 空,则命令所述对象创建单元332创建与该元素对应的对象;如杲所述元素的 指向不为空,则判断与该元素对应的对象中是否存在与所述字体信息相同的对 象,如果不存在,则命令所述对象创建单元332创建与该元素对应的对象;如 果存在,则命令所述绘制单元336直接将所迷紋理绘制到屏幕上。
上述在图形界面上显示文字的方法和系统中,由于在图形界面中显示文字 不需要依赖字库,可以减少占用的存储空间。可使用的字体和字号数量与系统相关,而不依赖于自身所带的字库数量,通常操作系统的字体数量较多,因而 可以显示的字体数量也较多。需要显示什么字才获得相应文字的紋理,不会造 成内存的浪费。根据字体再写字获得紋理,将紋理绘制到屏幕上进行显示,不 需要加载字库,可以提高启动速度。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域 的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和 改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附 权利要求为准。
权利要求
1、一种在图形界面上显示文字的方法,其特征在于,包括以下步骤接收需要显示的字符编码及字体信息;查找该字符编码对应的元素;创建与该元素对应的对象;依据所述字体信息写字获得纹理,将所述纹理赋给所述对象;将所述纹理绘制到屏幕上。
2、 根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,还 包括判断所述元素的指向是否为空的步骤,如果所述元素的指向为空,则执行 所述创建与该元素对应的对象的步骤;如果所述元素的指向不为空,则判断与 该元素对应的对象中是否存在与所述字体信息相同的对象,如果不存在,则执 行所述创建与该元素对应的对象的步骤;如果存在,则直接执行所述将所述紋 理绘制到屏幕上的步骤。
3、 根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,所 述字符编码采用统一码。
4、 根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,所 述对象包含字体信息部分,所述字体信息部分包含所述字体信息。
5、 根据权利要求4所述的在图形界面上显示文字的方法,其特征在于,所 述对象包含紋理信息部分,所述依据所述字体信息写字获得紋理的步骤包括在内存设备内容选用所述字体信息用格式化文本函数写字; 创建该字体大小的紋理;将内存设备内容上已经写好的字的紋理拷贝到所述创建的紋理上; 将所述拷贝到创建的紋理上的字的紋理赋给所述对象的纟丈理信息部分。
6、 根据权利要求1所述的在图形界面上显示文字的方法,其特征在于,所 述对象包含指向其他对象的指针。
7、 一种在图形界面上显示文字的系统,其特征在于,包括 输入模块,用于接收需要显示的字符编码及字体信息; 存储模块,用于存储与所述字符编码对应的元素;处理模块,与所述输入模块及存储模块相连,用于根据所述字符编码及字体信息在图形界面上显示文字,所述处理模块包括 对象创建单元,用于创建与所述元素对应的对象;图形设备接口单元,用于依据所迷字体信息写字获得紋理并将所述紋理赋 给所述对象;绘制单元,用于将所述紋理绘制到屏幕上。
8、 根据权利要求7所述的在图形界面上显示文字的系统,其特征在于,所 述对象创建单元创建的对象包含字体信息部分和紋理信息部分,并将所述字体 信息赋给所述字体信息部分,所述图形设备接口单元依据所述字体信息写字获 得紋理具体为在内存设备内容选用所述字体信息用格式化文本函数写字; 创建该字体大小的紋理;将内存设备内容上已经写好的字的紋理拷贝到所述创建的紋理上; 将所述拷贝到创建的紋理上的字的紋理赋给所述对象的紋理信息部分。
9、 根据权利要求7所述的在图形界面上显示文字的系统,其特征在于,所 述对象创建单元还用于将包含所述紋理的所述对象存储到所述存储模块中与所 述元素对应。
10、 根据权利要求9所述的在图形界面上显示文字的系统,其特征在于, 还包括判断单元,所述判断单元用于判断所述元素的指向是否为空,如果所述 元素的指向为空,则命令所述对象创建单元创建与该元素对应的对象;如果所述元素的指向不为空,则判断与该元素对应的对象中是否存在与所述字体信息 相同的对象,如果不存在,则命令所述对象创建单元创建与该元素对应的对象; 如果存在,则命令所述绘制单元直接将所述紋理绘制到屏幕上。
全文摘要
一种在图形界面上显示文字的方法,包括以下步骤接收需要显示的字符编码及字体信息;查找该字符编码对应的元素;创建与该元素对应的对象;依据所述字体信息写字获得纹理,将所述纹理赋给所述对象;将所述纹理绘制到屏幕上。上述在图形界面上显示文字的方法中,根据字体信息写字获得纹理,通常,操作系统自带有一些字体,根据这些字体再写字获得纹理,将纹理绘制到屏幕上进行显示,不需要加载字库,可以提高启动速度。此外,还提供了一种在图形界面上显示文字的系统。
文档编号G09G5/22GK101483035SQ200910036570
公开日2009年7月15日 申请日期2009年1月12日 优先权日2009年1月12日
发明者闻 汤, 王彭城 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1