0
我試圖檢測矩形或圓形是否包含點。這並不難,但我想知道這是否有任何內置的目標c的方法?謝謝!Objective C形狀和點
我試圖檢測矩形或圓形是否包含點。這並不難,但我想知道這是否有任何內置的目標c的方法?謝謝!Objective C形狀和點
對於矩形(如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類中指出,建立一個完整的路徑對象不一定是最有效的方法 - 如果你已經有某種圖紙什麼的,然後是圓的路徑,但是可能有其他更有效這樣做的方法。但是使用路徑是一種內置的方法。
我不會創建一個路徑來測試圓中的一個點。您可以檢查從該點到中心的距離。 – NSResponder 2009-11-28 22:57:07
對於效率而言,除非你已經在使用'NSBezierPath'對象,否則你可能是對的,儘管'Tojas'是要求內置方法的。無論如何,修正了答案。 – 2009-11-29 10:03:38