イメージに小さな画像がたくさんあるイメージ(基本的にスプライトを含むイメージストリップ)を含むUIImageがあります。私は私のUIViewの領域に単一のスプライトを描画したいと思います。UIImageの選択された領域を描く
UIImageの一部だけをビューに描画する方法が見つからないようです。これを行う方法はありますか?
イメージに小さな画像がたくさんあるイメージ(基本的にスプライトを含むイメージストリップ)を含むUIImageがあります。私は私のUIViewの領域に単一のスプライトを描画したいと思います。UIImageの選択された領域を描く
UIImageの一部だけをビューに描画する方法が見つからないようです。これを行う方法はありますか?
私はあなたがCGImageCreateWithImageInRect()を探しているかもしれないと思うです。 property of the same nameとUIImage
からCGImage
を得ることができます。
EDIT:2014年に存在し、2009年にはなかった別のオプションはSpriteKitです。あなたがスプライトシートを必要としていることに応じて、それは役に立つかもしれません。
もちろん、クォーツでも可能です。
ここでは、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];
}
これはすばらしいものですが、私は間違いなくブックマークしますが、このためのマスクを作成したくありません。私は単に次のようなことをしたい:[[UIImage imageNamed:@ "myimage"] drawInRect:CGMakeRect(10,10,50,50)fromRect:CGMakeRect(60,60,50,50)]; – rein
スプライトシートを扱うカテゴリがUIImage
と書かれています。 CGImageCreateWithImageInRect()
に、先に述べたように、それはhttp://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/
役立つかもしれない、このカテゴリーの拠点をこのチェックアウトが、と速くはるかより便利に、単一のスプライトシートからスプライトを抽出する処理を行います。 Gitのハブページへ
リンク: https://github.com/r3econ/UIImage-Sprite-Additions
また、カカオポッドを使用してインストールすることができます。
ありがとう、今これを試してください。 – rein
良い1 @Sixten、私はこれが彼が望んでいたように聞こえると思う+1 –
完全に動作します(描いている間にCGImagesが反転している頭痛がありません)。ありがとう。 – rein