加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

是否可以对.NET应用程序中的用户dpi设置做出反应

发布时间:2020-12-14 01:56:56 所属栏目:Windows 来源:网络整理
导读:问题描述: 我目前正在开发Visual Basic .NET应用程序.事实证明,我的应用程序无法在运行不同于“标准”的dpi设置的系统上正常显示(在Windows XP下为100%= 96dpi). 当我change the system’s dpi settings我的GUI看起来有点搞砸了,你可以在下面的截图中看到(
问题描述:

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

当我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.

解决方法

Graphics类的 DpiX和 DpiY属性包含以下信息:

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

由于您使用的是Windows窗体,因此可以使用Form.CreateGraphics创建Graphics对象.

当然,最好的做法是让您的应用程序在任何DPI设置上都看起来很棒.如果你不能转移到WPF,下面的SO问题包含很多关于如何使用WinForms工作的提示:

> Creating a DPI-Aware Application

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读