使用Alpha检测PNG上的触摸

时间:2009-07-23 20:38:23

标签: iphone cocoa-touch

我正在尝试检测加载到UIImageView中的PNG图像上的触摸事件。除了正在测试图像周围的边界矩形(正如预期)之外,我的一切工作正常。我想做的是测试用户是否选择了部分可见PNG而不是UIImageView本身。

例如,如果我有一个马蹄形图像,我希望它只在您选择侧面时才响应触摸,而不是在没有绘制任何内容的中心部分。我有点不知所措,谷歌揭示了一些人有同样的问题,但甚至没有暗示从哪里开始寻找。

1 个答案:

答案 0 :(得分:1)

两种方式:

a)检查图像的像素数据,以确定触摸的像素是否为透明像素。您必须将图像绘制到脱机缓冲区才能实现。使用CGContextDrawImage和CGBitmapContextGetData来访问UIImage.CGImage中的像素数据。Apple's Q&A解释了访问像素数据的基本方法。

b)你有马蹄形的多边形表示,并使用多边形命中测试来确定是否触摸了马蹄铁。谷歌为算法的“多边形点”。

如果你只需要一些图像就可以减少工作量,但是如果你有很多热门测试(游戏有很多动作)b)可能会更好。