2009-10-26 40 views
7

我有一个UIImage包含一个图像与图像上的一大堆小图片(本质上是一个包含精灵的图像条)。我想绘制一个单一的精灵到我的UIView区域。绘制UIImage的选定区域

我似乎无法找到一种方法只将部分UIImage绘制到视图上。有没有这样的方法?

回答

8

我想你可能会寻找CGImageCreateWithImageInRect()。您可以从UIImageproperty of the same name获得CGImage

编辑:存在于2014年的另一个选项是2009年没有的SpriteKit。根据你可能需要做什么需要一个精灵表,这可能是有用的。

+0

谢谢,现在就试试这个。 – rein 2009-10-26 21:11:59

+0

好的@Sixten,我觉得这听起来更像他想要的+1 – 2009-10-26 21:13:42

+0

完美的作品(减去CGImages在绘图时被翻转的一些令人头痛的问题)。谢谢。 – rein 2009-10-26 21:49:14

2

是的,你确定可以用石英。

这里有一个教程,告诉你如何获取UIImage并掩饰它的一部分。

http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

下面是从页面的代码(柜面它会因为某些原因)

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { 

    CGImageRef maskRef = maskImage.CGImage; 

    CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
     CGImageGetHeight(maskRef), 
     CGImageGetBitsPerComponent(maskRef), 
     CGImageGetBitsPerPixel(maskRef), 
     CGImageGetBytesPerRow(maskRef), 
     CGImageGetDataProvider(maskRef), NULL, false); 

    CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
    return [UIImage imageWithCGImage:masked]; 

} 
+0

这是很棒的东西,我一定会收藏它,但我不想为此创建一个蒙版。我只是想做一些事情:[[UIImage imageNamed:@“myimage”] drawInRect:CGMakeRect(10,10,50,50)fromRect:CGMakeRect(60,60,50,50)]; – rein 2009-10-26 21:10:00