CEGUI顯示中文解決辦法

來源:互聯網
上載者:User

在使用CEGUI中,一直沒發現不能直接顯示中文,後來在網上找到瞭解決方法:

     1.找到一個中文字型,以微軟黑體為例:找到C:/WINDOWS/Fonts目錄下的"simhei"檔案,拷貝到Ogre字型目錄(如D:/ogre /Samples/Media/fonts)下。

     2.D:/ogre/Samples/Media/gui目錄下建立一個名為"simhei-12.font"檔案,用記事本開啟,添加如下內 容:<?xml version="1.0" ?><Font Name="simhei-12" Filename="simhei.ttf" Type="FreeType" Size="12" NativeHorzRes="1024" NativeVertRes="768" AutoScaled="false" AntiAlias="true" /> (可直接複製gui目錄中"bluehighway-12.font"裡面的內容,再改Font Name 和Filename)。

     3.找到Ogre程式中使用的scheme檔案(如"TaharezLookSkin.scheme"),用記事本開啟,在開關找到字型識別欄位 (如"<Font Name="BlueHighway-8" Filename="bluehighway-8.font" />"),修改或添加相同的內容"<Font Name="simhei-12" Filename="simhei-12.font" /> "。 Font Name必須和"simhei-12.font"檔案中的Font Name相同,標識使用的字型名。

     4.在Ogre程式中createScene函數中使用字型。

         如:mCEGUISystem->setDefaultFont((CEGUI::utf8*)"simhei- 12");  

         在需要顯示中文時字元可以使用從寬字元轉換成多位元組:

mList=(CEGUI::Combobox*)(FrmWnd->getChild("root/Fram1/List"));

std::wstring aa = L"中文測試"; //字串可為多語言結合(如"this is 中文!")

char buffer[128] = "";

WideCharToMultiByte(CP_UTF8,0,aa.c_str(),aa.size(),buffer,sizeof(buffer),0,0);

CEGUI::ListboxTextItem* item = new CEGUI::ListboxTextItem((CEGUI::utf8*)buffer, 0);
mList->addItem(item);
運行結果


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.