问题描述:
我目前正在开发Visual Basic .NET应用程序。事实证明,在以不同于“标准”(在Windows XP下为100%= 96dpi)的dpi设置运行的系统上,我的应用程序无法正确显示。
当我change the system's dpi settings时,您的GUI看起来有点困惑,如以下屏幕截图所示(由于这是缩放问题,因此屏幕截图上的文本为德语无所谓;对此表示抱歉):
Windows XP,100%缩放,96 dpi->一切看起来都像我期望的那样。
Windows XP,缩放比例为125%,120 dpi->窗口底部的按钮不再适合窗口内部。
我要实现的目标:
如果显示比例设置为100%以外的其他值,我希望在应用程序启动后立即向用户显示一个警告对话框。
问题:
是否有可能读取系统的dpi值?如果是这样,那会怎样?
似乎还有DisplayProperties-class和DisplayInformation-class,但是据我所知,它仅适用于Windows-Store-Apps。
最佳答案
Using g = Me.CreateGraphics()
Dim dpiX = g.DpiX
Dim dpiY = g.DpiY
End Using
由于使用的是Windows窗体,因此可以使用Form.CreateGraphics创建
Graphics
对象。当然,最好的做法是使您的应用程序在任何DPI设置下看起来都很棒。如果您不能使用WPF,则以下SO问题包含有关如何使WinForms起作用的许多提示:
关于.net - 是否可以对.NET应用程序中的用户dpi设置使用react,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21165986/