如何让制作一个可以保持圆角的CCSprite
2013-06-27 18:52
239 查看
原文
@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
- 【转载】Cocos2D里制作可以保持圆角的CCSprite的方法
- 如何制作一个可以上传到 fir.im 的 ipa 文件 - Ad-Hoc篇
- 如何制作一个圆角图像
- 如何制作一个可以上传到fir.im的ipa文件(包含最新的Xcode打包方式)
- 如何制作一个可以用Bochs调试的最新内核系统盘
- 如何在页面内制作一个可以实现'另存为'的链接
- wordpress如何制作一个跟随滑动的文章目录?Content Index文章目录插件修改篇
- Android中如何让一个布局可以被选中和点击
- 8.如何使用cocos2d和box2d来制作一个Breakout游戏:第二部分
- 如何使用cocos2dx 制作一个多向滚屏坦克类射击游戏-第二部分
- 如何制作一个塔防游戏 Cocos2d-x 2.0.4
- 如果美图可以把妹,如何用技术手段做一个会拍照的程序员?
- 如何制作一个简单的16位CPU
- inno setup软件--教你如何制作一个漂亮的安装程序
- 33. 百度面试题:有一个很大很大的输入流,大到没有存储器可以将其存储下来,而且只输入一次,如何从这个输入 流中随机取得m个记录
- 如何使用VS 2013发布一个可以在Windows XP中独立运行的可执行文件
- 网站制作教程-如何才能做好一个网站?
- 制作一个可以滑动操作的 Table View Cell
- 黑莓开发新手入门教学帖,如何制作一个能控制LED颜色的程序(六)