2017-06-01 71 views
0

我在试图找出什么DPI设置我的应用程序正在运行。如何检测用户的字体(DPI)?

我试过了。

Using g As Graphics = MyBase.CreateGraphics() 
     dpiX = g.DpiX 
     dpiY = g.DpiY 
End Using 

TextBox1.Text = dpiX.ToString() 
TextBox2.Text = dpiy.ToString() 

我曾尝试使用

Dim searcher As New ManagementObjectSearcher(_ 
       "root\CIMV2", _ 
       "SELECT * FROM Win32_DisplayConfiguration") 

      For Each queryObj As ManagementObject in searcher.Get() 
      TextBox3.Text = string.Format("LogPixels: {0}", queryObj("LogPixels")) 

两台显示器96 DPI。在我的普通电脑上,以及我的虚拟DPI设置为150%。

如何找到当前屏幕的正确DPI?

// Linus

回答

0

我发现问题所在。

我没有一个应用程序清单文件hade的dpiaware集。

<asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> 
    <asmv3:windowsSettings 
     xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> 
     <dpiAware>True/PM</dpiAware> 
    </asmv3:windowsSettings> 
</asmv3:application> 

有了它,它按预期工作。