我正在开发一款可在iOS和桌面(Windows,Mac,Linux)上运行的多平台游戏。我希望游戏能够根据屏幕英寸的分辨率调整某些UI元素的大小。这个想法是,如果一个按钮应该是,例如,在任何界面中大约1/2英寸,它将自动按比例缩放。
现在对于iOS设备,使用强力技术可以很好地解决这个问题。您可以查找设备类型并使用硬编码表来确定每个设备的屏幕大小(以英寸为单位)。不是最优雅的解决方案,但足够。
台式机非常棘手。我希望和希望存在的是一种(某些?)监视器向操作系统报告其实际屏幕大小(以英寸为单位)的机制。如果该机制存在并且我可以以某种方式访问它,至少对于某些监视器我可以得到好的数字。但我从来没有在任何主要的OS API中遇到任何这样的概念。
有没有办法在Win32中询问屏幕大小(以英寸为单位)?如果是这样,是否有实际提供此信息的监视器?
(如果答案是否定的:天哪,这看起来不是很有用吗?)
答案 0 :(得分:3)
对于Windows,请先查看SetProcessDPIAware()
以了解有关关闭自动缩放的讨论,然后在HDC上调用GetDeviceCaps( LOGPIXELSX )
and GetDeviceCaps( LOGPIXELSY )
以确定显示器的DPI。按这些设置划分活动监视器上的屏幕分辨率,你就可以得到它的大小。
另请参阅this article以了解有关DPI感知应用的类似讨论。