CCLableTTF 文字描边


主要代码

+(CCRenderTexture *)createStroke:(CCLabelTTF *)label size:(float)size color:(ccColor3B)cor

{

CCRenderTexture* rt = [CCRenderTexture renderTextureWithWidth:label.contentSize.width+size*2  height:label.contentSize.height+size*2];

CGPoint originalPos = [label position];

ccColor3B originalColor = [label color];

BOOL originalVisibility = [label visible];

[label setColor:cor];

[label setVisible:YES];

ccBlendFunc originalBlend = [label blendFunc];

[label setBlendFunc:(ccBlendFunc) { GL_SRC_ALPHA, GL_ONE }];

 

CGPoint bottomLeft = ccp(label.contentSize.width * label.anchorPoint.x + size, label.contentSize.height * label.anchorPoint.y + size);

CGPoint positionOffset = ccp(label.contentSize.width * label.anchorPoint.x – label.contentSize.width/2,label.contentSize.height * label.anchorPoint.y – label.contentSize.height/2);

CGPoint position = ccpSub(originalPos, positionOffset);

[rt begin];

for (int i=0; i<360; i+=30) // you should optimize that for your needs

{

[label setPosition:ccp(bottomLeft.x + sin(CC_DEGREES_TO_RADIANS(i))*size, bottomLeft.y + cos(CC_DEGREES_TO_RADIANS(i))*size)];

[label visit];

}

[rt end];

[label setPosition:originalPos];

[label setColor:originalColor];

[label setBlendFunc:originalBlend];

[label setVisible:originalVisibility];

[rt setPosition:position];

return rt;

}

CCLabel* label = [CCLabel labelWithString: @"Some Text"
	dimensions:CGSizeMake(305,179) alignment:UITextAlignmentLeft
	fontName:@"SomeFont" fontSize:23];
[label setPosition:ccp(167,150)];
[label setColor:ccWHITE];
CCRenderTexture* stroke = [SomeUtilityClass createStroke:label  size:3  color:ccBLACK];
[self addChild:stroke];
[self addChild:label];

参考自(更多CCMenuItem描边):

http://www.cocos2d-iphone.org/forum/topic/12126


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值