确定CGPoint是否在图像区域内

时间:2012-03-04 10:13:43

标签: iphone ios xcode ipad

我正在试图弄清楚CGPoint是否位于图像的形状内。图像是简单的黑色形状,例如下面附着的两个。我想创建一个方法来确定CGPoint是否位于该形状的黑色区域内。

我认为这需要两件事: 1)将图像转换为可以用代码读取的内容(不确定使用哪种图像处理或如何使用)

2)使用它作为参考来确定CGPoint是否在其中。

任何帮助或想法表示赞赏。我之前从未做过图像处理类型的编码。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:11)

看看Ole Begemann的OBShapedButton。在那里,您会找到包含UIImage方法的ColorAtPixel类别。猜猜那就是你要找的东西。

然后,您可以使用以下内容获取某个像素的UIColor

UIImage *image = [UIImage imageWithCGImage:yourCGImage];
CGPoint point = CGPointMake(pointx,pointy);
UIColor *pixelColor = [image colorAtPixel:point];

为了简化RGB值,您还可以查看uicolor-utilities。使用UIColor-Expanded类别,您可以简单地确定让我们说红色和蓝色组件。如果它们很低(像素是暗的),则测试点是内部形状。

CGFloat redComp = [pixelColor red];
CGFloat blueComp = [pixelColor blue];

BOOL isInsideShape = ((redComp < 0.5) && (blueComp < 0.5));