Cocos2d-x里面的HelloCpp项目不显示文字(或中文出现乱码)--解决方案

来源:互联网 发布:网络监管员是做什么的 编辑:程序博客网 时间:2024/04/30 09:26

一、今天在Cocos2d-x交流群中,有人发问说新下载的Cocos2d-x中的Demo(即HelloCpp.sln)编译运行时,标签上的文字不显示(如下图),就特意研究了下,现列出以下解决方案:


1.如果你的引擎版本是Cocos2d-x 2.x,则可以这么修改:

方案一:打开文件夹cocos2dx\platform\win32\CCImage.cpp文件,按Ctrl+F快捷键查找:m_hBmp = CreateBitmap(nWidth, nHeight, 1, 32, NULL);



1)将m_hBmp = CreateBitmap(nWidth, nHeight, 1, 32, NULL);
替换成 :
     m_hBmp = CreateCompatibleBitmap(m_hDC, nWidth, nHeight);

2)再查找

GetDIBits(dc.getDC(), dc.getBitmap(), 0, m_nHeight, m_pData, (LPBITMAPINFO)&bi, DIB_RGB_COLORS);
在这句代码之前,添加:

bi.bmiHeader.biBitCount = 32;
方案二:出现这种情况,其根本原因在于你的系统颜色配置有问题

        打开你的颜色管理面板,设置颜色选项:真彩色(32位)

右键单击桌面->选择“屏幕分辨率”->“高级设置”->“监视器”选项卡->颜色(C):选择“真彩色(32位)”->单击“确定”,OK。


重新编译运行,如图:

2.如果你的引擎版本是Cocos2d-x 3.x,就不要去修改代码了,因为3.x版本与之前的2.x版本差别还是比较大的,重写了很多方法,封装的更加完备,即使你找到CCImage.cpp文件(\cocos\platform\CCImage.cpp),里面也没有

m_hBmp = CreateBitmap(nWidth, nHeight, 1, 32, NULL);

所以,建议不要修改源代码。

解决方案:参见上面2.x版本的方案二,更改你的系统色彩渲染位。

二、LabelTTF标签上的中文字体显示乱码问题,如图:

出现上述情况,是由于引擎默认编码格式是:简体中文(GB2312)-代码页 936 ,为有格式编码。

解决方案1:参见博客--http://blog.csdn.net/m_leonwang/article/details/17586775

                                  --http://blog.itpub.net/14466241/viewspace-752027/

解决方案2:一种较为简便的方法

打开你的项目工程->选择含有汉字的文件,比如:HelloCPP.cpp->单击“文件”菜单->选择“高级保存选项(V)”->编码选项,选择“Unicode(UTF-8无签名)-代码页 65001”->单击“确定”,OK。


重新编译运行,如图:


0 0