2014-01-16 34 views
5

问题描述:是否有可能对用户的DPI设置反应在.NET应用程序

我目前正在开发一个Visual Basic .NET应用程序。事实证明,我的应用程序在以不同于“标准”的不同dpi设置运行的系统上无法正常显示(windows xp下100%= 96dpi)。

当我change the system's dpi settings我的GUI看起来稍微搞砸了,你可以在下面的截图看到(因为这是一个规模问题是不应该的问题,关于截图的文字是德语;遗憾的这个):

Windows XP,100%比例,96 dpi - >一切看起来像我期望的。 Windows XP, 100% scale, 96 dpi

Windows XP,125%缩放,120 dpi - >窗口底部的按钮不再适合窗口。 Windows XP, 125% scale, 120 dpi

我想达到的目标:

如果显示比例设置为任何大于100%,否则我想尽快在应用程序启动用户显示一个警告对话框。

问:

是否有可能读取系统的DPI值?如果是这样,那会是怎样呢? 似乎有一个DisplayProperties-class以及DisplayInformation-class,但据我所见,它仅适用于Windows-Store-Apps。

+2

解决方法:使用WPF,它是独立于默认分辨率。 winforms不支持任何东西。 –

+0

@HighCore是正确的。这是WPF首先创建的原因之一 – Zache

+0

谢谢你们,我会看看WPF并考虑下一次更新。 – Christian

回答

6

Graphics类的DpiXDpiY属性包含以下信息:

Using g = Me.CreateGraphics() 
    Dim dpiX = g.DpiX 
    Dim dpiY = g.DpiY 
End Using 

由于您使用的是Windows窗体,您可以创建一个Graphics物体Form.CreateGraphics


当然,最好的行动方针是使你的应用程序上任何 DPI设置很好看。如果你不能移动到WPF,下面的SO问题包含有关如何使这项工作用的WinForms了很多的提示:

+0

感谢Heinzi,我会尽快回家! – Christian

相关问题