Objective-C中的鼠标坐标?

时间:2012-02-03 01:04:58

标签: objective-c macos cocoa events

这三种获取鼠标坐标的方法有什么区别:

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

我已经检查了文档,但描述太技术性了。有人可以用简单的术语解释这三者之间的区别吗?

1 个答案:

答案 0 :(得分:6)

每个窗口和每个视图都有自己的坐标系,除非你已经修改过它,否则从左下角的(0,0)开始向上计数和向右计数。 -[NSEvent locationInWindow]为您提供事件发生的位置窗口的坐标系(即(0,0)是窗口的左下角)。 -[NSWindow convertBaseToScreen:]在窗口的坐标系中获取一个坐标并将其转换为屏幕坐标,因此(0,0)现在表示整个屏幕的左下角。

-[NSWindow mouseLocationOutsideOfEventStream]为您提供鼠标现在的位置(在您发送给它的窗口的坐标系中),与任何事件无关。这很少是有用的信息。