是否可以对用户';s.NET应用程序中的dpi设置

是否可以对用户';s.NET应用程序中的dpi设置,.net,vb.net,windows,.net,Vb.net,Windows,问题描述: 我目前正在开发一个Visual Basic.NET应用程序。事实证明,我的应用程序在运行dpi设置不同于“标准”(windows xp下100%=96dpi)的系统上无法正确显示 当我看到我的GUI有点混乱时,正如您在以下屏幕截图中看到的(由于这是一个缩放问题,因此屏幕截图上的文本是否为德语并不重要;对此表示抱歉): Windows XP,100%扩展,96 dpi->一切都像我期望的那样。 Windows XP,125%缩放,120 dpi->窗口底部的按钮不再适合窗口内部。

问题描述:

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

当我看到我的GUI有点混乱时,正如您在以下屏幕截图中看到的(由于这是一个缩放问题,因此屏幕截图上的文本是否为德语并不重要;对此表示抱歉):

Windows XP,100%扩展,96 dpi->一切都像我期望的那样。

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

我想要实现的目标:

如果显示比例设置为100%以外的任何值,我希望在应用程序启动后立即向用户显示一个警告对话框

问题:

是否有可能读取系统的dpi值?如果是的话,那会是怎样的呢? 似乎也有,但据我所知,它仅适用于Windows应用商店应用。

图形类的属性和属性包含以下信息:

Using g = Me.CreateGraphics()
    Dim dpiX = g.DpiX
    Dim dpiY = g.DpiY
End Using
由于您使用的是Windows窗体,因此可以使用创建
图形
对象


当然,最好的做法是使您的应用程序在任何DPI设置下都看起来很棒。如果您无法转到WPF,那么下面的问题包含了大量有关如何使用WinForms实现此功能的提示:


解决方案:使用WPF,默认情况下,WPF与分辨率无关。winforms不支持任何东西。@HighCore是正确的。这是WPF在第一个PaysAskes家伙中创建的原因之一,我将查看WPF并考虑下一次更新。我无法抗拒添加一些(未被问及完全关闭的)UI建议:一个感叹号就足够了(你希望你的应用程序看起来专业,而不是幼稚),文本应该以按钮为中心,“JETZT”之前的大空间看起来像一个显示错误,按钮标题应该以大写字母开头(与屏幕截图左侧的XP对话框相比)。感谢您的反馈。我有意编辑这张照片,也不是为了在这里张贴“广告”。通常,产品名称出现在您看到上面空白空间的地方。为了澄清,我应该使用黑匣子。此外,蓝色图像框包含特定于产品的图像。因此,在应用程序本身中,文本集中在按钮上。然而,你关于商标的解释是对的!我会在下一次更新时考虑这个问题。谢谢海因茨,我一到家就试试!