2012-02-03 2 views
3

Quelle est la différence entre ces trois méthodes d'obtenir les coordonnées souris:Coordonnées de la souris en Objective-C?

  • [NSWindow convertBaseToScreen]
  • [NSEvent* locationInWindow]
  • [NSWindow mouseLocationOutsideOfEventStream]

je l'ai déjà vérifié la documentation, mais les descriptions étaient trop techniques. Quelqu'un pourrait-il expliquer la différence entre ces trois en termes plus simples?

Répondre

6

Chaque fenêtre et chaque vue possède son propre système de coordonnées, qui (à moins que vous ne l'ayez modifié) commence à (0, 0) en bas à gauche et compte vers le haut et vers la droite. -[NSEvent locationInWindow] vous donne l'emplacement où l'événement a eu lieu le système de coordonnées de la fenêtre (c'est-à-dire, (0, 0) est le coin inférieur gauche de la fenêtre). -[NSWindow convertBaseToScreen:] prend une coordonnée dans le système de coordonnées de la fenêtre et la convertit en coordonnées d'écran, de sorte que (0, 0) signifie maintenant le coin inférieur gauche de l'écran entier.

-[NSWindow mouseLocationOutsideOfEventStream] vous donne l'emplacement (dans le système de coordonnées de la fenêtre à laquelle vous l'envoyez) où la souris est maintenant, sans rapport avec un événement. Ceci est rarement une information utile.

+0

Merci, votre réponse était parfaite. Juste une chose - vous avez dit mouseLocationOutsideOfEventStream retourne les coordonnées de la position de la souris dans les coordonnées de la fenêtre. Que se passerait-il si la souris était à l'extérieur de la fenêtre? – fdh

+1

@Farhad: Tous les systèmes de coordonnées sont fondamentalement infinis - ils ne sont tout simplement pas visibles. Par exemple, si la souris est à deux pixels à gauche du bas de la fenêtre, les coordonnées sont (-2, 0). – Chuck

+0

J'ai compris, merci encore – fdh

Questions connexes