【问题标题】:Convert NSPoint in screen coordinates to window coordinates将屏幕坐标中的 NSPoint 转换为窗口坐标
【发布时间】:2011-04-30 02:49:54
【问题描述】:

我正在一个可可应用程序中实现拖放,我正在使用 NSDraggingSource 协议中的以下方法:

- (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 来完成。提前致谢!

【问题讨论】:

    标签: cocoa drag-and-drop


    【解决方案1】:

    看看 NSWindow 文档,有一个

    - (NSPoint)convertScreenToBase:(NSPoint)aPoint
    

    这将使您可以将点转换为窗口坐标。

    【讨论】:

    • (NSPoint)convertScreenToBase:(NSPoint)aPoint 现在已弃用,取而代之的是 (NSRect)convertRectFromScreen:(NSRect)aRect。显然可以将点转换为矩形,使用这种方法,然后再转换回来,但这真的是现在首选的成语吗?一定有更好的方法。
    • @Omphalos:似乎没有更好的方法(或者我完全错过了它),所以我最终在 NSWindow 的类别上编写了一个新方法,它构建了一个 NSRect,转换它,并返回转换后的矩形的原点。它有点恢复-convertScreenToBase: 的行为,并让您有机会将其命名为更符合其他类似方法;我打电话给我的-convertPointFromScreen:
    猜你喜欢
    • 2023-03-21
    • 2012-06-06
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多