我正在使用xcode为iPhone制作游戏。我有一个起始图像,我希望从中获得第二个图像,其中包含一些(四个)透明区域,例如就像这个:
问题在于我不知道如何实现它;我要处理原始图像并从中切割区域吗?或者我要创建一个新图像,我只放置原始图像中的可见部分? 任何建议或片段都会非常感激。
答案 0 :(得分:1)
好吧,我是通过创建自定义UIView子类并使用其drawRect方法绘制部分来实现的。 例如:
- (无效)的drawRect:(
CGRect)rect
{
[super drawRect:rect];
CGContextRef ctx = UIGraphicsGetCurrentContext(); // get drawing context
CGContextSaveGState(ctx); //remember current state
CGContextClipToRect(ctx, CGRectMake(0, 0, 100, 100)); //set clipping
CGContextDrawImage(ctx, CGRectMake(0, 0, img.size.width, img.size.height), img.CGImage);
CGContextRestoreGState(ctx); //restore state, so the previous clipping will be canceled
CGContextSaveGState(ctx);
CGContextClipToRect(ctx, CGRectMake(100, 100, 100, 100));
CGContextDrawImage(ctx, CGRectMake(0, 0, img.size.width, img.size.height), img.CGImage);
CGContextRestoreGState(ctx);
}
这将绘制两个小的rects。在这段代码中,img是一个UIImage。
然而,这是最简单的方法,而不是最有效的 - 它需要重绘每个部分。您可能需要检查CGContextClipToRects和CGContextClip函数,以使其更加高效和灵活。