J'essaie de détecter si un rectangle ou un cercle contient un point. Ce n'est pas si difficile, mais je veux savoir s'il existe une méthode intégrée dans l'objectif c pour cela? Merci!Formes et points Objective C
0
A
Répondre
2
Pour les rectangles (comme NSRect
s) il y a la fonction Fondation NSPointInRect()
:
NSPoint somePoint = //The point you want to test for
NSRect someRect = //The rectangle you want to test in
BOOL rectContainsPoint = NSPointInRect(somePoint, someRect);
Pour les cercles, on peut utiliser la méthode d'instance 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];
même si vous avez un chemin rectangulaire vous pouvez utiliser containsPoint:
pour tester si le point est dans ce rectangle.
Edit: Comme NSResponder a souligné, la création d'un objet chemin complet ne peut pas toujours être la méthode la plus efficace - si vous avez déjà des chemins de cercle pour une sorte de dessin ou quelque chose, oui, mais il y a probablement d'autres plus efficaces façons de le faire. Cependant, l'utilisation de chemins est une méthode intégrée pour le faire.
Questions connexes
- 1. Interopérabilité Objective-C et C
- 2. Combinaison C++ et Objective-C
- 3. Android et Objective-C
- 4. Objective-c et Xcode
- 5. C# menu principal et formes mdi
- 6. Cadres utilisés pour Objective-C et Objective-C++
- 7. Différences entre Objective-C et Objective-C 2.0
- 8. Catégories Doxygen et Objective-C
- 9. La colonne automatique s'aligne le long des deux-points dans Xcode et Objective C?
- 10. mélange C Structs et Propriétés Objective-C
- 11. Traduire en Objective-C de Objective-C++
- 12. Besoin d'aide avec la conversion de points en formes
- 13. Bibliothèques multithread pour Objective-C
- 14. Objectif-C 101: notation par points et propriétés de l'objet
- 15. c/objective-c question
- 16. Objective-C: différence entre id et void *
- 17. Objective-C et utilisation de SEL/IMP
- 18. Objective C interfaces, délégués, et protocoles
- 19. Vraiment Big Numbers et Objective-C
- 20. Autorelease et NSString dans Objective C
- 21. Suggestions pour apprendre Objective-C et Cocoa
- 22. @selector et autre classe (Objective-C)
- 23. kCFNumberFormatterScientificStyle et kCFNumberFormatterDecimalStyle hybride? - iphone/objective-c
- 24. Emacs, Objective-C et saisie semi-automatique
- 25. compte de référence Objective-C et AutoRelease
- 26. Superglobals en Objective-C et iOS
- 27. UIKit.h et Foundation.h dans Objective-C
- 28. Organisation en Objective-C et Xcode
- 29. Héritage dans Objective-c et Fonctions
- 30. Objective-C Rechercher et remplacer problème chaîne
Je ne créerais pas de chemin pour tester un point dans un cercle. Vous pouvez simplement vérifier la distance entre le point et le centre. – NSResponder
Ouais en termes d'efficacité, à moins que vous ne travailliez déjà avec un objet 'NSBezierPath', vous avez probablement raison, même si' Tojas' demandait des méthodes intégrées. Correction de la réponse quand même. –