專利名稱:在圖形界面上顯示文字的方法和系統(tǒng)的制作方法
在圖形界面上顯示文字的方法和系統(tǒng)
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其是計算機技術(shù)中在圖形界面上顯示文字 的方法和系統(tǒng)。
背景技術(shù):
計算機中圖形界面的使用大大提高了人們在操作計算機時的交互性。在圖 形界面中,除了圖形本身外,通常也需要在圖形上顯示文字,以表達(dá)無法或很 難用圖形表示的意思。例如在游戲平臺的界面中顯示各個用戶的用戶名就需要 在圖形界面中顯示文字。
傳統(tǒng)的圖形界面中顯示文字需要依賴字庫,圖形界面啟動時,會加載對應(yīng) 的字庫,把字庫紋理保存在內(nèi)存中。通常, 一個字庫就是一個位圖丈件,位圖 中保存著字庫中文字的紋理。當(dāng)需要繪制某個字時(假設(shè)是字"騰"),就會根 據(jù)"騰"字的字符編碼,轉(zhuǎn)換為對應(yīng)一個坐標(biāo),該坐標(biāo)就是"騰"字在位圖里 面的坐標(biāo),然后引擎會根據(jù)該坐標(biāo)從字庫的紋理取出"騰"字的紋理,然后將 該紋理繪制在屏幕上,這樣就在屏幕上寫了一個"騰"字,實現(xiàn)了在圖形界面 上顯示文字。
由于在圖形界面中顯示文字需要依賴字庫, 一個字庫文件通常都會好幾兆, 而且字體越大,相應(yīng)的位圖也越大,字庫文件也就越大,導(dǎo)致釆用圖形界面的 軟件占用存儲空間較大。又因為是從字庫文件里面取紋理進(jìn)行寫字,所以字庫 文件里面的字體和字號決定了能繪制的字體和字號,需要繪制幾種字體和字號, 就需帶上對應(yīng)的幾個字庫文件,導(dǎo)致可使用的字體和字號數(shù)量有限。并且,在 啟動時需要加載字庫,字庫文件多而且較大的話,會對啟動速度造成影響,而 通常在一次使用中不會寫很多不同字,所以字庫文件里面的大部分紋理都沒用 到,造成了內(nèi)存的浪費。
發(fā)明內(nèi)容
有鑒于此,有必要提供一種提高啟動速度的在圖形界面上顯示文字的方法。 此外,還提供了 一種提高啟動速度的在圖形界面上顯示文字的系統(tǒng)。
一種在圖形界面上顯示文字的方法,包括以下步驟接收需要顯示的字符 編碼及字體信息;查找該字符編碼對應(yīng)的元素;創(chuàng)建與該元素對應(yīng)的對象;依 據(jù)所述字體信息寫字獲得紋理,將所述的紋理賦給所述對象;將所述紋理繪制 到屏幕上。
一種在圖形界面上顯示文字的系統(tǒng),包括 輸入模塊,用于接收需要顯示的字符編碼及字體信息; 存儲模塊,用于存儲與所述字符編碼對應(yīng)的元素;
處理模塊,與所述輸入模塊及存儲模塊相連,用于根據(jù)所述字符編碼及字 體信息在圖形界面上顯示文字,所述處理模塊包括
對象創(chuàng)建單元,用于創(chuàng)建與所述元素對應(yīng)的對象;
圖形設(shè)備接口單元,用于依據(jù)所述字體信息寫字獲得紋理并將所述的纟文理
賦給所述對象;
繪制單元,用于將所述紋理繪制到屏幕上。
上述在圖形界面上顯示文字的方法和系統(tǒng)中,根據(jù)字體信息寫字獲得紋理, 通常,操作系統(tǒng)自帶有一些字體,根據(jù)這些字體再寫字獲得紋理,將紋理繪制 到屏幕上進(jìn)行顯示,不需要加載字庫,可以提高啟動速度。
圖1為第一實施方式的在圖形界面上顯示文字的方法的流程圖; 圖2為第二實施方式的在圖形界面上顯示文字的方法的流程圖; 圖3為在圖形界面上顯示文字的系統(tǒng)的模塊圖。
具體實施方式
在以下實施方式中,根據(jù)字體信息寫字獲得紋理,通常,操作系統(tǒng)自帶有 一些字體,根據(jù)這些字體再寫字獲得紋理,將紋理繪制到屏幕上進(jìn)行顯示,不
5需要加載字庫,可以^^高啟動速度。
一種在圖形界面上顯示文字的方法,如圖l所示
步驟S102,接收需要顯示的字符編碼及字體信息。需要在圖形界面上顯示 的文字在計算機內(nèi)是以字符編碼的形式進(jìn)行傳輸和存儲的,在將其顯示到圖形 界面上之前需要根據(jù)該文字的字體信息生成紋理,即與字體大小對應(yīng)的位圖, 便于在圖形界面上顯示。字體信息可以是默認(rèn)的字體信息,也可以用戶自定義 的字體信息。
步驟S104,查找該字符編碼對應(yīng)的元素。本實施方式中,字符編碼采用統(tǒng) 一碼(UNICODE )。因為每個UNICODE字符編碼占用的是16位,所以可以將 一個UNICODE字符編碼的高8位區(qū)域的值對應(yīng)到數(shù)組的0~255行,低8位區(qū) 域的值可以對應(yīng)到數(shù)組的0~255列,這樣,每個UNICODE字符都可以唯一對 應(yīng)到數(shù)組的某個元素。當(dāng)接收到一個需要顯示的UNICODE字符時(假設(shè)為 "騰"),"騰"字對應(yīng)的UNICODE編碼為0X817E,其高8位轉(zhuǎn)為十進(jìn)制是129, 低8位轉(zhuǎn)為十進(jìn)制是126,所以"騰"字就對應(yīng)上面數(shù)組的第129行第126列元 素(下面稱為A元素)。
步驟S106,創(chuàng)建與該元素對應(yīng)的對象。所述對象包含字體信息部分、紋理 信息部分和指向其他對象的指針。對象剛創(chuàng)建時,字體信息部分、紋理信息部 分和指向其他對象的指針都是空的。對象創(chuàng)建后,所述字體信息賦給字體信息
部分,例如,需要顯示的字體為宋體的"騰"字,則對象的字體信息部分即保 存宋體的代碼。
步驟S108,依據(jù)所述字體信息寫字獲得紋理將所述紋理賦給所述對象。通 常,操作系統(tǒng)自帶有一些字體,根據(jù)這些字體再寫字荻得紋理,將紋理繪制到 屏幕上進(jìn)行顯示,不需要加載字庫,可以提高啟動速度。具體地,步驟S108分 為如下步驟
在內(nèi)存設(shè)備內(nèi)容(Device Content)選用所述字體信息用圖形設(shè)備接口 (Graphics Device Interface)的格式化文本函數(shù)(DrawText)寫字,獲得文字的纟丈 理。例如在內(nèi)存設(shè)備內(nèi)容選用宋體用圖形設(shè)備接口的格式化文本函數(shù)寫"騰" 字,獲得"騰"字的紋理。然后,根據(jù)所述字體信息中的字體大小創(chuàng)建該字體大小的紋理,例如四號 字,則創(chuàng)建四號字大小對應(yīng)的紋理,此時紋理是空白的。
將內(nèi)存設(shè)備內(nèi)容上已經(jīng)寫好的字的紋理拷貝到所述創(chuàng)建的紋理上。因為該 內(nèi)存設(shè)備內(nèi)容是只創(chuàng)建一個的,需要反復(fù)用到,下次用到時會先清空該內(nèi)存設(shè) 備內(nèi)容的內(nèi)容,所以寫了之后需要拷貝到另外新創(chuàng)建的紋理上。
將拷貝到創(chuàng)建的紋理上的字的紋理賦給對象的紋理信息部分。
步驟S110,將所述紋理^^制到屏幕上??梢杂肈irectDraw的方法將該紋理 繪制到屏幕上,而DirectDraw繪制紋理是很高效的,也就是說,實現(xiàn)了在圖形 界面上顯示文字。
進(jìn)一步地,為了提高寫字的速度,可以保存已經(jīng)寫好的文字的纟文理。在字 符編碼對應(yīng)的元素中設(shè)置多個對象,每個對象對應(yīng)該字符編碼,即該文字的一 種字體信息。如圖2所示
在步驟S104之后,還包括判斷所述元素的指向是否為空的步驟(步驟S202 )。 如果所述元素的指向為空,則執(zhí)行步驟S106,創(chuàng)建與該元素對應(yīng)的對象。元素 的指向為空表明該元素對應(yīng)的文字還未被使用過,即還未獲得任何該文字的紋 理。在步驟S106中創(chuàng)建與該元素對應(yīng)的對象后,需要將該元素指向該創(chuàng)建的對 象,表示該元素對應(yīng)的文字已經(jīng)使用過。如果所述元素的指向不為空,則進(jìn)入 步驟S204。
步驟S204,判斷與該元素對應(yīng)的對象中是否存在與所述字體信息相同的對 象,如杲不存在,則執(zhí)行步驟S106,創(chuàng)建與該元素對應(yīng)的對象的。如果存在, 則直接執(zhí)行步驟S110,將所述紋理繪制到屏幕上。判斷的方式為,將需要顯示 的文字的字體信息與對象中的字體信息部分的字體信息進(jìn)行比較,以判斷是否 相同。由于同一文字通??梢杂卸喾N字體,因此,同一文字也可能創(chuàng)建多個對 象。對象中的指向其他對象的指針即可以用于形成鏈表。舉例來說,元素可以 指向第一個創(chuàng)建的對象,第一個創(chuàng)建的對象中的指向其他對象的指針可以指向 第二個創(chuàng)建的對象,依此類推。在判斷的過程中,可以依次判斷需要顯示的文 字的字體信息與元素已有對象中的字體信息部分的字體信息是否相同,如果相同,則停止判斷,直接執(zhí)行步驟S110,如果與所有已有對象中的字體信息部分
的字體信息都不相同,則執(zhí)行步驟S106,創(chuàng)建與該元素對應(yīng)的對象的。
上述方法可以進(jìn)一步提高速度,因為步驟S108通常需要較多的計算時間。
此外,還提供了一種在圖形界面上顯示文字的系統(tǒng)。如圖3所示,在圖形 界面上顯示文字的系統(tǒng)300包括輸入模塊310、存儲模塊320及處理模塊330。 輸入模塊310用于接收需要顯示的字符編碼及字體信息。 存儲模塊320用于存儲與所述字符編碼對應(yīng)的元素。
處理模塊330與輸入模塊310及存儲模塊320相連,用于根據(jù)所述字符編 碼及字體信息在圖形界面上顯示文字。處理模塊330包括對象創(chuàng)建單元332、圖 形設(shè)備接口單元334、繪制單元336及判斷單元338。
對象創(chuàng)建單元332用于創(chuàng)建與所迷元素對應(yīng)的對象。對象創(chuàng)建單元332創(chuàng) 建的對象包含字體信息部分、紋理信息部分和指向其他對象的指針。
圖形設(shè)備接口單元334用于依據(jù)所述字體信息寫字獲得紋理并將所述的紋 理賦給所述對象。圖形設(shè)備接口單元334依據(jù)所述字體信息寫字獲得紋理具體 為在內(nèi)存設(shè)備內(nèi)容選用所述字體信息用格式化文本函數(shù)寫字;創(chuàng)建該字體大 小的紋理;將內(nèi)存設(shè)備內(nèi)容上已經(jīng)寫好的字的紋理拷貝到所述創(chuàng)建的紋理上; 將拷貝到創(chuàng)建的紋理上的字的紋理賦給對象的紋理信息部分。對象創(chuàng)建單元332 還用于將包含所述紋理的所述對象存儲到所述存儲才莫塊320中與所述元素對應(yīng)。
繪制單元336用于將所述紋理繪制到屏幕上。
判斷單元338用于判斷所迷元素的指向是否為空,如果所述元素的指向為 空,則命令所述對象創(chuàng)建單元332創(chuàng)建與該元素對應(yīng)的對象;如杲所述元素的 指向不為空,則判斷與該元素對應(yīng)的對象中是否存在與所述字體信息相同的對 象,如果不存在,則命令所述對象創(chuàng)建單元332創(chuàng)建與該元素對應(yīng)的對象;如 果存在,則命令所述繪制單元336直接將所迷紋理繪制到屏幕上。
上述在圖形界面上顯示文字的方法和系統(tǒng)中,由于在圖形界面中顯示文字 不需要依賴字庫,可以減少占用的存儲空間。可使用的字體和字號數(shù)量與系統(tǒng)相關(guān),而不依賴于自身所帶的字庫數(shù)量,通常操作系統(tǒng)的字體數(shù)量較多,因而 可以顯示的字體數(shù)量也較多。需要顯示什么字才獲得相應(yīng)文字的紋理,不會造 成內(nèi)存的浪費。根據(jù)字體再寫字獲得紋理,將紋理繪制到屏幕上進(jìn)行顯示,不 需要加載字庫,可以提高啟動速度。
以上所述實施例僅表達(dá)了本發(fā)明的幾種實施方式,其描述較為具體和詳細(xì), 但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域 的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和 改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附 權(quán)利要求為準(zhǔn)。
權(quán)利要求
1、一種在圖形界面上顯示文字的方法,其特征在于,包括以下步驟接收需要顯示的字符編碼及字體信息;查找該字符編碼對應(yīng)的元素;創(chuàng)建與該元素對應(yīng)的對象;依據(jù)所述字體信息寫字獲得紋理,將所述紋理賦給所述對象;將所述紋理繪制到屏幕上。
2、 根據(jù)權(quán)利要求1所述的在圖形界面上顯示文字的方法,其特征在于,還 包括判斷所述元素的指向是否為空的步驟,如果所述元素的指向為空,則執(zhí)行 所述創(chuàng)建與該元素對應(yīng)的對象的步驟;如果所述元素的指向不為空,則判斷與 該元素對應(yīng)的對象中是否存在與所述字體信息相同的對象,如果不存在,則執(zhí) 行所述創(chuàng)建與該元素對應(yīng)的對象的步驟;如果存在,則直接執(zhí)行所述將所述紋 理繪制到屏幕上的步驟。
3、 根據(jù)權(quán)利要求1所述的在圖形界面上顯示文字的方法,其特征在于,所 述字符編碼采用統(tǒng)一碼。
4、 根據(jù)權(quán)利要求1所述的在圖形界面上顯示文字的方法,其特征在于,所 述對象包含字體信息部分,所述字體信息部分包含所述字體信息。
5、 根據(jù)權(quán)利要求4所述的在圖形界面上顯示文字的方法,其特征在于,所 述對象包含紋理信息部分,所述依據(jù)所述字體信息寫字獲得紋理的步驟包括在內(nèi)存設(shè)備內(nèi)容選用所述字體信息用格式化文本函數(shù)寫字; 創(chuàng)建該字體大小的紋理;將內(nèi)存設(shè)備內(nèi)容上已經(jīng)寫好的字的紋理拷貝到所述創(chuàng)建的紋理上; 將所述拷貝到創(chuàng)建的紋理上的字的紋理賦給所述對象的纟丈理信息部分。
6、 根據(jù)權(quán)利要求1所述的在圖形界面上顯示文字的方法,其特征在于,所 述對象包含指向其他對象的指針。
7、 一種在圖形界面上顯示文字的系統(tǒng),其特征在于,包括 輸入模塊,用于接收需要顯示的字符編碼及字體信息; 存儲模塊,用于存儲與所述字符編碼對應(yīng)的元素;處理模塊,與所述輸入模塊及存儲模塊相連,用于根據(jù)所述字符編碼及字體信息在圖形界面上顯示文字,所述處理模塊包括 對象創(chuàng)建單元,用于創(chuàng)建與所述元素對應(yīng)的對象;圖形設(shè)備接口單元,用于依據(jù)所迷字體信息寫字獲得紋理并將所述紋理賦 給所述對象;繪制單元,用于將所述紋理繪制到屏幕上。
8、 根據(jù)權(quán)利要求7所述的在圖形界面上顯示文字的系統(tǒng),其特征在于,所 述對象創(chuàng)建單元創(chuàng)建的對象包含字體信息部分和紋理信息部分,并將所述字體 信息賦給所述字體信息部分,所述圖形設(shè)備接口單元依據(jù)所述字體信息寫字獲 得紋理具體為在內(nèi)存設(shè)備內(nèi)容選用所述字體信息用格式化文本函數(shù)寫字; 創(chuàng)建該字體大小的紋理;將內(nèi)存設(shè)備內(nèi)容上已經(jīng)寫好的字的紋理拷貝到所述創(chuàng)建的紋理上; 將所述拷貝到創(chuàng)建的紋理上的字的紋理賦給所述對象的紋理信息部分。
9、 根據(jù)權(quán)利要求7所述的在圖形界面上顯示文字的系統(tǒng),其特征在于,所 述對象創(chuàng)建單元還用于將包含所述紋理的所述對象存儲到所述存儲模塊中與所 述元素對應(yīng)。
10、 根據(jù)權(quán)利要求9所述的在圖形界面上顯示文字的系統(tǒng),其特征在于, 還包括判斷單元,所述判斷單元用于判斷所述元素的指向是否為空,如果所述 元素的指向為空,則命令所述對象創(chuàng)建單元創(chuàng)建與該元素對應(yīng)的對象;如果所述元素的指向不為空,則判斷與該元素對應(yīng)的對象中是否存在與所述字體信息 相同的對象,如果不存在,則命令所述對象創(chuàng)建單元創(chuàng)建與該元素對應(yīng)的對象; 如果存在,則命令所述繪制單元直接將所述紋理繪制到屏幕上。
全文摘要
一種在圖形界面上顯示文字的方法,包括以下步驟接收需要顯示的字符編碼及字體信息;查找該字符編碼對應(yīng)的元素;創(chuàng)建與該元素對應(yīng)的對象;依據(jù)所述字體信息寫字獲得紋理,將所述紋理賦給所述對象;將所述紋理繪制到屏幕上。上述在圖形界面上顯示文字的方法中,根據(jù)字體信息寫字獲得紋理,通常,操作系統(tǒng)自帶有一些字體,根據(jù)這些字體再寫字獲得紋理,將紋理繪制到屏幕上進(jìn)行顯示,不需要加載字庫,可以提高啟動速度。此外,還提供了一種在圖形界面上顯示文字的系統(tǒng)。
文檔編號G09G5/22GK101483035SQ200910036570
公開日2009年7月15日 申請日期2009年1月12日 優(yōu)先權(quán)日2009年1月12日
發(fā)明者聞 湯, 王彭城 申請人:騰訊科技(深圳)有限公司