给定一个 NSView
,我怎样才能获取它的屏幕矩形和它所在的显示器,这样我就可以使用 CGDisplayCreateImageForRect
?
我找到了 NSWindow convertRectToScreen
方法,但它仅从 10.7 开始可用(我也需要 10.6),并且它仍然没有显示 NSView
处于打开状态。
最佳答案
假设您不关心获取 View 的实际像素大小(因为它在 HDPI 和常规显示器之间有所不同 - 我现在无法想象它会是一个有用的值),您基本上只是想要使用 NSView 的 convertRect:toView:
和 NSWindow 的 convertBaseToScreen:
的组合。因此,例如,[someView.window ConvertBaseToScreen:[someView ConvertRect:someView.bounds toView:nil]]
。这是假设您没有以任何不寻常的方式转换 View (旋转它或其他方式)。请记住,您仍然应该添加检查窗口是否响应 convertRectToScreen:
并在响应时使用它 - 这样您就可以避免使用已弃用的方法 (convertBaseToScreen:
>) 尽可能。
之后,如果您需要屏幕的确切像素大小,您可以使用 NSScreen 的 convertRectToBacking:
(我不确定您是否需要它)。至于确定屏幕,NSWindow 有它的 screen 方法,在大多数情况下应该足够了。我能看到的唯一问题是当 View 跨越屏幕时,因此您可能必须检查它是否与任何其他显示器相交并合并图像等。也就是说,我不确定 CGDisplayCreateImageForRect 是否会解释这一点。您必须自己测试一下。
关于objective-c - 获取 NSView 屏幕矩形和显示 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214214/