2011-03-13 5 views
0

CGIIではないUIImageViewのバウンディングボックスはどのように作成できますか?UIImageViewのバウンディングボックスを作成する

私は、画像と検出の衝突を表示する必要があるオブジェクトを私のビューに持っていたいと思います。

問題は、これらのオブジェクトをCGRectにフィッティングして、ボックス内の領域で衝突を検出するのではなく、実際のイメージであることを確認することです。

これをどのように達成しますか?

+0

これはゲーム用ですか?もしそうならCocos2D – amattn

答えて

1

これは小さな問題ではありません。しかし、基本はCGRectは長方形であり、四角形内のヒットテストはかなり理解しやすいです。しかし、あなたはより複雑な形をしたいように思えます。 UIImageViewはイメージを表示します。コリジョンテストにどのような形状を使用したいのか分かりません。だからあなたはそれを伝えなければならないだろう。

簡単に行うべきことの1つは、表示イメージのアルファ/透明な値を見てシェイプを作成することです。したがって、画像に当たる点が質問に答えるためには、画像内の点の位置を把握し、アルファが0より大きい場合はtrueを返します。これを行うと透明な背景を持つ画像を作成でき、作業。

これでうまくいかない場合は、ポイントとそのポリゴンでヒットテストを実行して詳細を実行することもできます。

How can I determine whether a 2D Point is within a Polygon?

+0

素晴らしいとスマートなアイデア。ありがとう。それは完全に動作するはずです。これはImageView自体の中のアルファを検出し、このテストされたビューの背後にあるビューのアルファを検出しません。 – jarryd

+0

それはうまくいくはずです。これは、UIImageからデータを取得する方法を示しています。http://stackoverflow.com/questions/448125/how-to-get-pixel-data-from-a-uimimage-cocoa-touch-or-cgimage-core-graphics – madmik3

+0

javaのPixelGrabber getPixel()と同様のメソッドがobj-cにありますか? – jarryd

関連する問題