查看: 1305|回复: 3

osgearth2.4+Qt4.8显示中文的问题

[复制链接]

该用户从未签到

发表于 2014-8-6 20:55:02 | 显示全部楼层 |阅读模式
有没有不改动源码就可以在地球上正确显示中文的方法?本人菜鸟,从qt窗体中的一个editline控件中获取到用户输入的中文字符,然后添加到地球上时没法实现中文显示,求教方法,最好有代码示范,因为我真的是新手,拜谢了

该用户从未签到

 楼主| 发表于 2014-8-6 22:26:30 | 显示全部楼层
解决了,方案如下:
//标注的图标;
       
        Style pin_System;
       
        pin_System.getOrCreate<IconSymbol>()->url()->setLiteral("data\\placemark64.png");
        //标注文字的样式;
        pin_System.getOrCreate<TextSymbol>()->alignment() = TextSymbol::ALIGN_CENTER_CENTER;
        pin_System.getOrCreate<TextSymbol>()->fill()->color() = Color::Yellow;
        pin_System.getOrCreate<TextSymbol>()->encoding() = osgEarth::Symbology::TextSymbol::ENCODING_UTF8;
        pin_System.getOrCreate<TextSymbol>()->font()="C:/WINDOWS/Fonts/STSONG.ttf";
       
        char wsrc[512];
        sprintf(wsrc, (const char *)ui.image_TxtName->text().toLocal8Bit().data());
        string strUtf8;
        gb2312ToUtf8(string(wsrc), strUtf8);



定义的几个函数:

void AddMarkAndPicture::gb2312ToUnicode(const string& src, wstring& result)
{
        int n = MultiByteToWideChar( CP_ACP, 0, src.c_str(), -1, NULL, 0 );
        result.resize(n);
        ::MultiByteToWideChar( CP_ACP, 0, src.c_str(), -1, (LPWSTR)result.c_str(), result.length());
}

void AddMarkAndPicture::gb2312ToUtf8(const string& src, string& result)
{
        wstring strWideChar;
        gb2312ToUnicode(src, strWideChar);
        unicodeToUTF8(strWideChar, result);
}
       

该用户从未签到

 楼主| 发表于 2014-8-6 22:28:04 | 显示全部楼层
void AddMarkAndPicture::unicodeToUTF8(const wstring &src, string& result)
{
        int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 );
        result.resize(n);
        ::WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, (char*)result.c_str(), result.length(), 0, 0 );
}少了一个方法

该用户从未签到

发表于 2014-10-9 10:09:41 | 显示全部楼层
楼主mingw编译osgearth成功了吗?我编译完后运行示例出错,有的话能发我一份编译好的osg和osgearth吗?247933092@qq.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表