如何知道字符串显示宽度

iOS里NSString有一个sizeWithFont方法,可以知道在当前字体下字符串的宽度,
cocos2d-x里怎么做到这个,我要以一定的宽度切分字符串。

getContentSize().width

CCLabelTTF的getContentSize可以取到大小,但这个方法必须要生成CCLabelTTF然后才能用,效率太差了。相当于有多少个字,就得生成多少次CCLabelTTF,这个底层是Image实现的。

ttf是等宽字体,使用fontSize*str.size()就可以得到宽度

— Begin quote from ____

lzj 发表于 2012-6-11 09:41 url

ttf是等宽字体,使用fontSize*str.size()就可以得到宽度

— End quote

mark,手动计算很长时间了,才知道有这个:funk:

那中英文混排怎么办呢
英文和符号不是等宽的

— Begin quote from ____

ccwccy 发表于 2012-6-11 10:18 url

mark,手动计算很长时间了,才知道有这个

— End quote

手动计算是怎么计算的
调objc方法?

gb2312编码下中文是占两个字节的,宽度也是英文字符的两倍,所以计算方式是一样的,符号也一样,按字节的数量算就可以了。

— Begin quote from ____

dogstar 发表于 2012-6-11 11:00 url

手动计算是怎么计算的
调objc方法?

— End quote

	int rowCount=0;
	rowCount = strlen(details)%45==0?strlen(details)/45:strlen(details)/45+1;
	m_describeLb = CCLabelTTF::labelWithString(details, CCSizeMake(180*EXPAND,15*rowCount*EXPAND), CCTextAlignmentLeft, FONT_DESC_NAME, 12*EXPAND);
	m_describeLb->setAnchorPoint(ccp(0,0));
	m_describeLb->setIsRelativeAnchorPoint(true);
	m_describeLb->setColor(color);
	this->addChild(m_describeLb,2);

这个是我写一个宽度固定,自适应高度的label,仅供参考,不是很精确

— Begin quote from ____

andliy0226 发表于 2012-6-11 11:47 url

遇到楼主相同问题,关注。还没想到更好的办法。

我准备调用系统方法, 如android 用jni 调用系统 measureT …

— End quote

我目前也打算用各系统方法,然后用一个通用的接口接进来,ios需要字体的名字和大小

— Begin quote from ____

lzj 发表于 2012-6-11 11:36 url

gb2312编码下中文是占两个字节的,宽度也是英文字符的两倍,所以计算方式是一样的,符号也一样,按字节的数 …

— End quote

这个宽度和字符集有关系吗,不是只和字体相关么

— Begin quote from ____

ccwccy 发表于 2012-6-11 11:49 url

int rowCount=0;
rowCount = strlen(details)%45==0?strlen(details)/45:strlen(details)/45+1;
m_ …

— End quote

嗯 我的问题要麻烦,我需要把文字显示在不规则的区域内,
所以我必须要控制每一行的宽度来填充

嗯 其实主要不是左对齐,是要精确控制每一行的换行
做到下面这图的效果,而且效率不能太差

借问下楼主此问题有没有解决,怎么解决的,谢谢

同求解决方法