2012-03-25 52 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