【问题标题】:Screen size in inches on WindowsWindows 上的屏幕尺寸(以英寸为单位)
【发布时间】:2013-07-19 08:32:37
【问题描述】:

我正在开发一款可在 iOS 和桌面(Windows、Mac、Linux)上运行的多平台游戏。我希望游戏能够根据屏幕分辨率调整某些 UI 元素的大小英寸。这个想法是,如果一个按钮在任何界面中应该是 1/2 英寸左右,它就会自动缩放到那个大小。

现在对于 iOS 设备,这个问题可以通过蛮力技术很好地解决。您可以查找设备的类型并使用硬编码表来确定每个设备的屏幕尺寸(以英寸为单位)。不是最优雅的解决方案,但足够了。

台式机是棘手的。我希望希望存在一种机制,(某些?)监视器通过该机制向操作系统报告其实际屏幕尺寸(以英寸为单位)。如果该机制存在并且我可以以某种方式访问​​它,那么至少对于某些监视器,我可以获得很好的数字。但我从未在任何主要的操作系统 API 中遇到过这样的概念。

有没有办法在 Win32 中以英寸为单位询问屏幕尺寸?如果有,是否有实际提供此信息的监视器?

(如果答案是否定的:天哪,这看起来不是很有用吗?)

【问题讨论】:

  • 似乎这可能最好由平台分开,因为每个平台都有不同的正确答案。您已经有了针对 Windows 的答案,所以我建议将此作为您的 Windows 问题并针对 OS X 发布另一个问题。(我已经为您提供了答案,我会在该问题上发布它。)
  • stackoverflow.com/questions/12589198/…>

标签: windows api winapi graphics screen


【解决方案1】:

对于 Windows,首先请参阅 SetProcessDPIAware() 以了解有关关闭自动缩放的讨论,然后在您的 HDC 上调用 GetDeviceCaps( LOGPIXELSX ) and GetDeviceCaps( LOGPIXELSY ) 以确定显示器的 DPI。将活动显示器上的屏幕分辨率除以这些设置,就得到了尺寸。

另请参阅this article,了解有关 DPI 感知应用的类似讨论。

【讨论】:

  • 是否有理由避免使用GetDeviceCaps(VERTSIZE)GetDeviceCaps(HORZSIZE)?除非它们有问题,否则它们似乎更直接地提供了所需的信息。
  • @JerryCoffin - 至少在 Windows 7 上显然存在一些关于这些可靠性的问题。请参阅social.msdn.microsoft.com/Forums/vstudio/en-US/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
  • 2016-06-18
  • 2014-03-30
相关资源
最近更新 更多