- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在做一些测试,看看我的应用程序是否能在 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/
我是一名优秀的程序员,十分优秀!