Windows 7,C#,。Net 4.5.2:
在应用程序中,我需要检测当前主机的文本大小的当前系统设置。我(完全披露!)从另一个帖子中捏了下面的代码片段:
var form = new System.Windows.Forms.Form();
Graphics gfx = form.CreateGraphics();
userDPI = (int)gfx.DpiX;
这似乎是解决此问题的常用方法,如果我的Windows系统文本大小设置为"较小字体(默认)",则会将userDPI报告为96.如果我设置了Windows系统文字大小为"中等 - 125%" (然后重新登录)片段将userDPI报告为120(这是96dpi的125%)。到目前为止一切都很好。
但是,如果我将Windows系统文本大小设置为"更大 - 150%",代码片段实际上将userDPI报告为96(绝对不是96dpi的150%!)而是我期望的144的结果。
使用较大文本时的屏幕文本大小显然比任何一种替代方案都要大,所以我知道我已经按预期更改了系统设置。
那么我如何可靠地确定文本大小的当前系统设置?
答案 0 :(得分:0)
为了遇到同样问题的其他人的利益,答案似乎是直接从注册表中获取:
userDPI = (int)Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Control Panel\Desktop", "LogPixels", 0);