2009-10-26 23 views
7

イメージに小さな画像がたくさんあるイメージ(基本的にスプライトを含むイメージストリップ)を含むUIImageがあります。私は私のUIViewの領域に単一のスプライトを描画したいと思います。UIImageの選択された領域を描く

UIImageの一部だけをビューに描画する方法が見つからないようです。これを行う方法はありますか?

答えて

8

私はあなたがCGImageCreateWithImageInRect()を探しているかもしれないと思うです。 property of the same nameUIImageからCGImageを得ることができます。

EDIT:2014年に存在し、2009年にはなかった別のオプションはSpriteKitです。あなたがスプライトシートを必要としていることに応じて、それは役に立つかもしれません。

+0

ありがとう、今これを試してください。 – rein

+0

良い1 @Sixten、私はこれが彼が望んでいたように聞こえると思う+1 –

+0

完全に動作します(描いている間にCGImagesが反転している頭痛がありません)。ありがとう。 – rein

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

3

スプライトシートを扱うカテゴリがUIImageと書かれています。 CGImageCreateWithImageInRect()に、先に述べたように、それはhttp://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

役立つかもしれない、このカテゴリーの拠点をこのチェックアウトが、と速くはるかより便利に、単一のスプライトシートからスプライトを抽出する処理を行います。 Gitのハブページへ

リンク: https://github.com/r3econ/UIImage-Sprite-Additions

また、カカオポッドを使用してインストールすることができます。

関連する問題