如何让制作一个可以保持圆角的CCSprite
来源:互联网 发布:python 在图片上画框 编辑:程序博客网 时间:2024/06/09 11:08
原文
@interface StretchableSprite : CCSprite {}+(id)spriteWithFile:(NSString*)file size:(CGSize)size leftCap:(NSInteger)leftcap topCap:(NSInteger)topcap;-(id)initWithFile:(NSString*)file size:(CGSize)size leftCap:(NSInteger)leftcap topCap:(NSInteger)topcap;@end@implementation StretchableSprite+(id)spriteWithFile:(NSString*)file size:(CGSize)size leftCap:(NSInteger)leftcap topCap:(NSInteger)topcap{ return [[[self alloc] initWithFile:file size:size leftCap:leftcap topCap:topcap] autorelease];}-(id)initWithFile:(NSString*)file size:(CGSize)size leftCap:(NSInteger)leftcap topCap:(NSInteger)topcap{ UIImage* image = [UIImage imageNamed:file]; CGImageRef base = image.CGImage; CGContextRef context = CGBitmapContextCreate(nil, size.width, size.height, CGImageGetBitsPerComponent(base), 4 * size.width, CGImageGetColorSpace(base), kCGImageAlphaPremultipliedLast | kCGBitmapByteOrderDefault); float BASE_COL_WIDTH[] = {leftcap,1,image.size.width - leftcap -1}; float BASE_ROW_HEIGHT[] = {topcap,1,image.size.height - topcap -1}; float BASE_COL_X[] = {0,leftcap,leftcap + 1}; float BASE_ROW_Y[] = {0,topcap,topcap +1}; float TARGET_COL_WIDTH[] = {BASE_COL_WIDTH[0], size.width - BASE_COL_WIDTH[0] - BASE_COL_WIDTH[2], BASE_COL_WIDTH[2]}; float TARGET_ROW_HEIGHT[] = {BASE_ROW_HEIGHT[0], size.height - BASE_ROW_HEIGHT[0] - BASE_ROW_HEIGHT[2], BASE_ROW_HEIGHT[2]}; float TARGET_COL_X[] = {0,TARGET_COL_WIDTH[0],TARGET_COL_WIDTH[0]+TARGET_COL_WIDTH[1]}; float TARGET_ROW_Y[] = {size.height - TARGET_ROW_HEIGHT[0], size.height - TARGET_ROW_HEIGHT[0] - TARGET_ROW_HEIGHT[1], size.height - TARGET_ROW_HEIGHT[0] - TARGET_ROW_HEIGHT[1] - TARGET_ROW_HEIGHT[2]}; for (int row=0; row<3; row++) { for (int col=0; col<3; col++) { CGRect source = CGRectMake(BASE_COL_X[col], BASE_ROW_Y[row], BASE_COL_WIDTH[col], BASE_ROW_HEIGHT[row]); CGRect target = CGRectMake(TARGET_COL_X[col], TARGET_ROW_Y[row], TARGET_COL_WIDTH[col], TARGET_ROW_HEIGHT[row]); CGImageRef ref = CGImageCreateWithImageInRect(base, source); CGContextDrawImage(context, target, ref); CFRelease(ref); } } CGImageRef final = CGBitmapContextCreateImage(context); CGContextRelease(context); return [super initWithCGImage:final key:@"stretchable"];}@end
- 如何让制作一个可以保持圆角的CCSprite
- 如何让你的电脑保持清爽
- rcp(插件开发)如何让一个视图在多个透视图保持一样的位置
- 如何让一个窗体永远保持在最上层
- Cocos2d中,我们让CCSprite也可以接受触摸。
- Cocos2d中,我们让CCSprite也可以接受触摸。
- shiro 如何让一个页面既可以让admin查看,又可以让user查看
- 如何让自己保持精力充沛
- 如何让字典保持有序
- 如何让字典保持有序
- 如何让在客户端改变的状态保持连续性
- 我是如何让老电脑保持飞快的
- 如何让android的屏幕保持常亮
- 如何让你的网站瘦身而保持营养
- rpm 包的Linux 如何让屏幕保持唤醒状态
- 如何让您的PC 保持顺畅运行
- 如何让Oracle数据库保持优良性能的方法
- 一个可以在线制作邮票的网站
- spring response json提示406问题的解决
- Linq to MySql 为啥不设置主键列就不让插入数据
- Linux变更shell
- 设置Eclipse的内存大小
- PHP规则子类能否继承父类的private方法?
- 如何让制作一个可以保持圆角的CCSprite
- iPhone/iPad的IAP防破解之第三方服务器二次验证
- C++函数重定义(redefining)、重载(overload)、重写 (override)
- 如何使用CCRenderTexture创建动态纹理 Cocos2d-x 2.1.4
- 制作SimpleButton及设置显示对象的热区
- cookie和session有效时间问题
- tomcat_负载均衡
- 超级详细Tcpdump 的用法
- php程序修改成功后怎么换回原来的页面