绘制UIImage的选定区域

时间:2009-10-26 21:02:50

标签: iphone uiview uiimage

我有一个UIImage包含一个图像,图像上有一大堆较小的图片(本质上是一个包含精灵的图像条)。我想在我的UIView的一个区域画一个精灵。

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

3 个答案:

答案 0 :(得分:8)

我想你可能正在寻找CGImageCreateWithImageInRect()。您可以使用property of the same nameCGImage获得UIImage

编辑:2014年存在的另一种选择,即2009年没有,是SpriteKit。根据您可能正在做的事情,需要精灵表,这可能很有用。

答案 1 :(得分:3)

我写了一个UIImage类别来处理精灵表。看看这个,它可能会有所帮助http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

如前所述,此类别基于CGImageCreateWithImageInRect(),但是从单个精灵表中提取精灵的过程远远更方便更快

链接到git hub页面: https://github.com/r3econ/UIImage-Sprite-Additions

您也可以使用可可豆荚安装。

答案 2 :(得分:2)

是的,你确定可以使用Quartz。

这里有一个教程,向您展示如何获取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];

}