В настоящее время я делаю несколько тестов, чтобы проверить, правильно ли работает приложение Retina Mac. Я установил Quartz Debug для этой цели, и теперь я запускаю масштабированный режим. Мой экранный режим теперь 960x540, но, конечно, физический размер монитора по-прежнему остается Full HD, то есть 1920x1080 пикселей.Есть ли способ найти коэффициент масштабирования для CGDisplay?
При запросе базы данных монитора с использованием CGGetActiveDisplayList()
, а затем используя CGDisplayBounds()
на отдельных мониторах в списке, размер возвращаемого монитора составляет 960x540. Это то, что я ожидал, потому что CGDisplayBounds()
, как говорят, использует глобальное пространство координат дисплея, а не пиксели.
К моему удивлению, однако, CGDisplayPixelsWide()
и CGDisplayPixelsHigh()
также возвращают 960x540, хотя они явно говорят, что возвращают пиксели, поэтому я ожидаю, что они вернут 1920x1080 вместо этого. Но они этого не делают.
Это оставляет мне интересно, как я могу получить реальное физическое разрешение монитора вместо масштабированного режима с использованием API CGDisplay
, то есть 1920x1080 вместо 960x540 в моем случае? Есть ли способ получить коэффициент масштабирования для CGDisplay
, чтобы я мог самостоятельно вычислить реальное физическое разрешение?
Я знаю, что могу получить этот коэффициент масштабирования, используя метод backingScaleFactor
, но это возможно только для NSScreen
, как я могу получить коэффициент масштабирования для CGDisplay
?
Ниже приведено описание, связанное с этим вопросом: http://stackoverflow.com/q/42024942/1197719 – Andreas