gpt4 book ai didi

objective-c - 获取 NSView 屏幕矩形和显示 ID

转载 作者:行者123 更新时间:2023-12-03 17:35:24 33 4
gpt4 key购买 nike

给定一个 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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com