2012-03-04 29 views
9

我試圖弄清CG點是否位於圖像的形狀內。圖像是一個簡單的黑色形狀,如下面的兩個附件。我想創建一個方法來確定CGPoint是否位於該形狀的黑色區域內。確定CGPoint是否在圖像區域

我覺得這需要兩個條件: 1)開啓圖像轉化爲可使用的代碼(不知道這會用什麼樣的圖像處理或如何)

2讀取)使用,作爲參考以確定CGPoint是否在其中。

任何幫助或想法讚賞。我從來沒有做過圖像處理類型的編碼。謝謝!

enter image description here

+4

您可以用您選擇的格式創建一個由您控制的數據支持的'CGBitmapContext'。您可以將其設置爲1x1上下文,設置CTM,以便您希望測試的點位於原點處,並將圖像繪製到上下文中。然後測試您的數據以查看您是否有黑色像素或白色像素。 – 2012-03-04 10:15:56

+2

@凱文巴拉德:爲什麼不提供這個答案?聽起來像一個解決方案。 – DarkDust 2012-03-04 10:17:24

+1

@DarkDust:因爲我不想花時間寫出一些代碼。 – 2012-03-04 22:15:16

回答

11

看看奧萊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)); 
+1

哇,謝謝你! – Mat 2012-03-04 12:47:35

相關問題