2009-11-28 37 views
0

我試圖檢測矩形或圓形是否包含點。這並不難,但我想知道這是否有任何內置的目標c的方法?謝謝!Objective C形狀和點

回答

2

對於矩形(如NSRect S)有基礎功能NSPointInRect()

NSPoint somePoint = //The point you want to test for 
NSRect someRect = //The rectangle you want to test in 

BOOL rectContainsPoint = NSPointInRect(somePoint, someRect); 

圓形,您可以使用NSBezierPath實例方法containsPoint:

NSBezierPath *circlePath = //Assume this is instantiated to a circle path 
NSPoint somePoint = //The point you want to test for 

BOOL circleContainsPoint = [circlePath containsPoint:somePoint]; 

同樣,如果你有一個矩形路徑您可以使用containsPoint:來測試該點是否在該矩形中。

編輯:作爲NSResponder類中指出,建立一個完整的路徑對象不一定是最有效的方法 - 如果你已經有某種圖紙什麼的,然後是圓的路徑,但是可能有其他更有效這樣做的方法。但是使用路徑是一種內置的方法。

+2

我不會創建一個路徑來測試圓中的一個點。您可以檢查從該點到中心的距離。 – NSResponder 2009-11-28 22:57:07

+0

對於效率而言,除非你已經在使用'NSBezierPath'對象,否則你可能是對的,儘管'Tojas'是要求內置方法的。無論如何,修正了答案。 – 2009-11-29 10:03:38