gpt4 book ai didi

macos - 有没有办法找到 CGDisplay 的缩放系数?

转载 作者:行者123 更新时间:2023-12-02 20:51:48 24 4
gpt4 key购买 nike

我目前正在做一些测试,看看我的应用程序是否能在 Retina Mac 上正确运行。为此,我安装了 Quartz Debug,目前正在运行缩放模式。我的屏幕模式现在是 960x540,但当然显示器的物理尺寸仍然是全高清,即 1920x1080 像素。

当使用 CGGetActiveDisplayList() 查询监视器数据库,然后在列表中的各个监视器上使用 CGDisplayBounds() 时,返回的监视器大小为 960x540。这是我所期望的,因为据说 CGDisplayBounds() 使用全局显示坐标空间,而不是像素。

然而,令我惊讶的是,CGDisplayPixelsWide()CGDisplayPixelsHigh() 也返回 960x540,尽管它们明确表示返回像素,所以我希望它们返回而是返回 1920x1080。但他们没有。

这让我想知道如何使用 CGDisplay API 检索显示器的真实物理分辨率而不是缩放模式,即在我的例子中是 1920x1080 而不是 960x540?有什么方法可以获取 CGDisplay 的缩放系数,以便我可以自己计算真实的物理分辨率?

我知道我可以使用 backingScaleFactor 方法获得这个缩放系数,但这只适用于 NSScreen,我如何获得 CGDisplay 的缩放系数

最佳答案

您需要检查显示器的模式,而不仅仅是显示器本身。使用 CGDisplayCopyDisplayMode(),然后使用 CGDisplayModeGetPixelWidth()CGDisplayModeGetPixelHeight()。最后两个是相对较新的函数,文档主要存在于标题中。

当然,不要忘记 CGDisplayModeRelease() 模式对象。

关于macos - 有没有办法找到 CGDisplay 的缩放系数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41985466/

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