在Win81 +非dpi识别过程中,计算出比例因子

时间:2015-07-20 04:13:38

标签: winapi windows-8.1 resolution

我遇到了一个问题,即我正在为非dpi识别进程编码,直到修复bug。

所以现在我需要做一个解决方案。我的想法是:弄清楚放大系数,并将我的元素宽度/高度按比例缩小。

所以现在我正在绘制第二个显示器的全宽和高度的画布,它是1920 x 1080(WxH)。但是,视觉上(通过截屏后的photoshop衡量)它将成为2880 x 1620。这是1.5的放大系数(2880除以1920或1620除以1080)。

我尝试使用GetDeviceCapsEnumDisplaysettings的方法获取dpi,但所有方法都返回了主监视器的方法(注意:EnumDisplaySettings设置dmLogPixels我认为是DPI如果EnumDisplaySettings使用ENUM_REGISTRY_SETTINGS的constnat,则为0,因此我必须使用ENUM_CURRENT_SETTINGS)。

我发现回复方式不同的唯一方法是GetDpiForMonitor MONITOR_DPI_TYPE constnat MDT_Angular_DPIMDT_Raw_DPI,如果我使用MDT_Effective_DPI它会给出{初级监视器。

现在这是我运行GetDpiForMonitor

的结果

没有一个次要值除以主要值给我一个放大因子1.5。无论如何都要获得这个比例因子吗?

由于

1 个答案:

答案 0 :(得分:0)

我刚才有了一个想法,但是它有效我用这里提出的三种方法中的任何一种来获得缩放的高度/宽度:Improper width and height for second monitor from GetMonitorInfo and GetDeviceCaps

    GetDeviceCaps或上
  • hdcScreen
  • GetMonitorInfo
  • EnumDisplayMonitors

然后我将它除以EnumDisplaySettings的宽度/高度。

这是我发现的唯一方法,还有其他办法吗?专家可以验证吗。