【问题标题】:Is there any way to find the scaling coefficient for a CGDisplay?有没有办法找到 CGDisplay 的比例系数?
【发布时间】: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


    【解决方案1】:

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

    当然,别忘了CGDisplayModeRelease() 模式对象。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 2021-03-26
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多