2010-10-25 160 views
8

我實現在Cocoa應用程序拖放和我使用從NSDraggingSource協議下面的方法:轉換NSPoint在屏幕座標窗口座標

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

的NSPoint在屏幕座標,並給出我需要它在窗口或視圖座標中。如果用NSEvent調用該方法,我可以執行以下操作:

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

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

但是我不知道如何使用NSPoint執行此操作。提前致謝!

回答

11

看一看的NSWindow文檔,有一個

- (NSPoint)convertScreenToBase:(NSPoint)aPoint 

,這將讓你轉換點到窗口座標。

+0

完美...非常感謝! – Dillon 2010-10-25 10:58:57

+6

'(NSPoint)convertScreenToBase:(NSPoint)aPoint'現在不贊成使用'(NSRect)convertRectFromScreen:(NSRect)aRect'。顯然,可以將點轉換爲矩形,使用此方法,然後轉換回來,但是這真的是現在的首選成語嗎?有一個更好的方法。 – Aeonaut 2011-08-15 22:02:01

+3

@Omphalos:似乎沒有更好的方法(或者我完全忽略它),所以我最終在NSWindow的一個類中編寫了一個新方法,它構建了一個NSRect,將其轉換並返回轉換的矩形。它有助於恢復'-convertScreenToBase:'的行爲,並使您有機會更加符合其他類似的方法;我打電話給我'-convertPointFromScreen:'。 – Tim 2012-10-15 17:31:40

相關問題