2010-10-25 12 views
8

Me estoy poniendo en práctica de arrastrar y colocar en una aplicación de cacao y estoy usando el siguiente método del Protocolo NSDraggingSource:Convertir NSPoint en coordenadas de pantalla a la ventana de coordenadas

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

El NSPoint está dada en coordenadas de pantalla y necesito en las coordenadas de la ventana o vista. Si el método se llama con un NSEvent que podía hacer lo siguiente:

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

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

Pero no puedo encontrar la manera de hacerlo con sólo un NSPoint. ¡Gracias por adelantado!

Respuesta

11

Tener un vistazo a la documentación NSWindow, hay una

- (NSPoint)convertScreenToBase:(NSPoint)aPoint 

que le permitirá convertir el punto de coordenadas de la ventana.

+0

Perfecto ... ¡Muchas gracias! – Dillon

+6

'(NSPoint) convertScreenToBase: (NSPoint) aPoint' ahora está en desuso en favor de' (NSRect) convertRectFromScreen: (NSRect) aRect'. Obviamente, uno puede convertir un punto en un rectángulo, usar este método y luego volver a convertir, ¿pero esta es realmente la expresión preferida ahora? Tiene que haber una mejor manera. – Aeonaut

+3

@ Omphalos: no parece haber una manera mejor (o me falta completamente), así que terminé escribiendo un nuevo método en una categoría de NSWindow que crea un NSRect, lo convierte y devuelve el origen de el rect convertido. Como que restaura el comportamiento de '-convertScreenToBase:', y le da la oportunidad de nombrarlo más en línea con otros métodos similares; Llamé a mi '-convertPointFromScreen:'. – Tim

Cuestiones relacionadas