【发布时间】:2023-03-13 02:36:02
【问题描述】:
我目前正在做一些测试,看看我的应用程序是否在 Retina Mac 上正常运行。为此,我已经安装了 Quartz Debug,并且我目前正在运行缩放模式。我的屏幕模式现在是 960x540,但当然显示器的物理尺寸仍然是全高清,即 1920x1080 像素。
使用 CGGetActiveDisplayList() 查询监视器数据库,然后在列表中的各个监视器上使用 CGDisplayBounds() 时,返回的监视器大小为 960x540。这是我所期望的,因为据说CGDisplayBounds() 使用的是全局显示坐标空间,而不是像素。
然而,令我惊讶的是,CGDisplayPixelsWide() 和 CGDisplayPixelsHigh() 也返回 960x540,尽管它们被明确表示返回像素,所以我希望它们返回 1920x1080。但他们没有。
这让我想知道如何使用CGDisplay API 检索显示器的实际物理分辨率而不是缩放模式,即在我的情况下是 1920x1080 而不是 960x540?有没有办法获得CGDisplay 的比例系数,以便我可以自己计算真实的物理分辨率?
我知道我可以使用backingScaleFactor 方法获得此比例系数,但这仅适用于NSScreen,我如何获得CGDisplay 的比例系数?
【问题讨论】:
标签: macos quartz-graphics quartz-2d