c++ - 如何创建带有自定义颜色的中文和日文字符的标签

标签 c++ cocos2d-x cocos2d-x-3.0

我使用的是 cocos2d-x (c++) 版本。 tvOS (Apple TV) 上的 3.8

我不想使用 TTF 版本,因为我没有像样的 Arial TTF 字体,它包括中文和日文字符,但文件大小可以接受(最多 1MB)。

如果我使用 Label::createWithSystemFont() 这不允许更改文本颜色。至少我没有找到如何改变它。

auto *n =  Label::createWithSystemFont("洗牌位置", font, fontSize, dimensions, hAlignment, vAlignment);
n->setColor(Color3B::RED);
n->setTextColor(Color4B::RED);

这会产生黑色文本...

编辑:

在绝望的情况下,我尝试了一些你可能认为我疯了的事情。 但它也不起作用。结果还是黑的。您知道如何更改标签的颜色吗?

Node* NodeFactory::colorizeLabel (Label *lbl, const Color3B& color)
{
     auto *maskSprite = lbl;

    CCRenderTexture * rt;
        rt = CCRenderTexture::create(
                                     maskSprite->getContentSize().width*maskSprite->getScaleX(),
                                     maskSprite->getContentSize().height*maskSprite->getScaleY()
                                     , kCCTexture2DPixelFormat_RGBA8888
        );
        maskSprite->setPosition(ccp(
                                    (maskSprite->getContentSize().width*maskSprite->getScaleX())/2,
                                    (maskSprite->getContentSize().height*maskSprite->getScaleY())/2
                                    )
                                );


    //rt->begin();
    rt->beginWithClear(120, 120, 0, 0);
    ((Node*)maskSprite)->visit();
    rt->end();

    Sprite *retval = Sprite::createWithTexture(rt->getSprite()->getTexture());
    retval->setColor(Color3B::WHITE);
    //retval->setBlendFunc((ccBlendFunc) { GL_SRC_COLOR, GL_ONE });

    return retval;
}

最佳答案

找到了 tvOS 上彩色系统字体的解决方案: 修复:CCDevice-tvos.mm:

原图:

[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle }];

新:

[str drawInRect:rect withAttributes:@{ NSFontAttributeName: font, NSParagraphStyleAttributeName:paragraphStyle,
    NSForegroundColorAttributeName:[UIColor colorWithRed:info->tintColorR green:info->tintColorG blue:info->tintColorB alpha:info->tintColorA]
}];

关于c++ - 如何创建带有自定义颜色的中文和日文字符的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38817275/

相关文章:

C++ vector push_back 方法和临时对象创建

iphone - 格式与字符串 : Cocos2d-x passing in a CCString

c++ - cocos2dx : Issue when returning multiple numberOfCellsInTableView in CCTableViwe?

ios - 浅色 Cocos2dx 上的 GL 混合

c++ - cocos2d-x beta3 LayerColor 不改变背景色

memory-management - 在 cocos2d-x 3.2 中替换场景时内存不释放

c++ - 类模板构造函数中的 SFINAE

c++ - 在使用宽字符串解析罗马数字时,Boost spirit 库无法正常工作

c++ - 如何在 cpp 中创建固定大小(就内存而言)的哈希表?

c++ - Apple Mach-O Linker 错误,我不知道该怎么办