2010-10-25 16 views
8

ich per Drag & Drop in eine Cocoa-Anwendung bin der Umsetzung und ich bin mit dem folgenden Verfahren aus dem NSDraggingSource Protokoll:Konvertieren NSPoint in Bildschirm-Fenster-Koordinaten Koordinaten

- (void)draggedImage:(NSImage *)draggedImage movedTo:(NSPoint)screenPoint{ 

Die NSPoint in Bildschirmkoordinaten gegeben ist und ich brauche es in Fenster- oder Ansichtskoordinaten. Wenn die Methode mit einem NSEvent genannt wurde, konnte ich folgendes tun:

-(void)mouseDown:(NSEvent *)pTheEvent { 

NSPoint tvarMouseInWindow = [pTheEvent locationInWindow]; 
NSPoint tvarMouseInView = [self convertPoint:tvarMouseInWindow fromView:nil]; } 

Aber ich kann nicht herausfinden, wie es zu tun mit nur einem NSPoint. Danke im Voraus!

Antwort

11

einen Blick auf die Dokumentation NSWindow haben, gibt es ein

- (NSPoint)convertScreenToBase:(NSPoint)aPoint 

, die Sie auf den Punkt zu Fensterkoordinaten umwandeln lassen.

+0

Perfekt ... Vielen Dank! – Dillon

+6

'(NSPoint) convertScreenToBase: (NSPoint) aPoint' ist jetzt veraltet zugunsten' (NSRect) convertRectFromScreen: (NSRect) aRect'. Offensichtlich kann man einen Punkt in ein Rechteck umwandeln, diese Methode verwenden und dann zurück konvertieren, aber ist das jetzt wirklich das bevorzugte Idiom? Es muss einen besseren Weg geben. – Aeonaut

+3

@ Omphalos: Es scheint keinen besseren Weg zu geben (oder ich vermisse es komplett), also schrieb ich eine neue Methode für eine Kategorie von NSWindow, die ein NSRect erstellt, es konvertiert und den Ursprung von das umgewandelte Rect. Es stellt das Verhalten von '-convertScreenToBase: 'wieder her und gibt Ihnen die Möglichkeit, es im Einklang mit anderen ähnlichen Methoden zu benennen; Ich rief meinen '-convertPointFromScreen:'. – Tim

Verwandte Themen