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"上显示中文"退出"

 

我的效果图:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值