CEGUI显示中文

最近在学习CEGUI,想在它里面显示中文。

在网上找了很多资料,发现这篇最好用。

 

在使用CEGUI中,一直没发现不能直接显示中文,后来在网上偶然看到,才发现这个问题!然后在网上google了半天,自己解决了这个问题。

     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");  

        在需要显示中文时字符可以使用从宽字符转换成多字节:

        std::wstring aa = L"退出";  //字符串可为多语言结合(如"adb123你好!")

        char buffer[128] = "";

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

        quit->setText((CEGUI::utf8*)buffer);        //设置按钮"quit"上显示中文"退出"

 

我的效果图:

 

CEGUI显示中文_第1张图片

 

你可能感兴趣的:(c,Google,Scheme,buffer,语言,微软)