2012-03-25 21 views
1

我有一個允許用戶旋轉和縮放的圖像。 每次用戶點擊圖片時,我都會試着弄清楚點是否透明。iphone - 在命中測試中應用CGAffineTransformRotate

如果它是透明的,我在視圖的HitTest中返回null,如果它不透明我返回視圖。用戶旋轉圖像時出現問題。在我的hitTest方法中,我需要根據當前視圖的旋轉來轉換點。否則,該點將在視圖(和圖像)上指示不相關的位置。

我該怎麼做?

非常感謝。

回答

2

CGAffineTransform Reference可能幫助:

CGPointApplyAffineTransform 

CGRectApplyAffineTransform 

CGSizeApplyAffineTransform 

但你開始思考,你需要進行手工測繪之前,我建議給它一試「,就好像'目前的轉換是CGAffineIdentity,並相應地編寫你的座標檢測。你可能對結果感到驚訝......

我自己的經驗說,它看起來當你從UITouch locationIn_SomeView_讓你點它交還給你以前SomeView的逆矩陣應用到點等。

所以,你可能不需要任何CGxxxApplyAffineTransform,除非你自己在事件系統之外生成點。

+0

太好了,謝謝!其實,我已經給了uview的座標系一個機會。但是由於我正在檢查圖像中某個特定像素的顏色,這似乎還不夠。 – vondip 2012-03-25 21:00:55

+1

就我而言,就是這樣。我有一個非矩形的圖像(圓角三角形),其中全部都是透明像素,但在三角形內部。我希望觸摸檢測不會觸發「透明」像素。所以我做了你所說的,即:我得到圖像*的像素座標,其矩形邊界*與視圖邊界對齊。如果我們忽略「視網膜比例因子」一分鐘,則視圖邊界內的任何點都會直接映射到圖像中的像素。即使當視圖被旋轉時 – verec 2012-03-26 10:54:51

+0

其實你是對的!我只是試了一下。你說它可能不適用於老鼠模式? – vondip 2012-03-26 16:37:42