检测 Windows 字体大小(100%、125% 和 150%)

2024-02-19

我创建了一个应用程序,该应用程序在用户选择 125% 或 150% 之前都可以完美运行。这会破坏我的申请。后来我找到了通过检测DPI来找到字体大小的方法。

在使用中文版 Windows 7 的用户开始使用我的应用程序之前,这种方法一直运行良好。整个应用程序在中文 Windows 7 上崩溃。据我所知(我无法真正测试它,因为我只有英文版本,安装语言包不会导致问题)中文字符导致奇怪的 DPI,破坏了我的应用。

我当前的代码工作原理如下:

if (dpi.DpiX == 120) // For 125% fonts
{
    // Resize form and set default font to correct problems
}
else if (dpi.DpiX == 96) // For 100 and 150% fonts
{
    // Resize form and set default font to correct problems
}

在英文版的 Windows 7 上,效果很好,但不知何故,中文版直接跳过了这一点,并且表单自行破坏,控件甚至不显示,字体非常大,超出了问题,图片框被移动。

那么有什么好方法可以在不检测 DPI 的情况下检测 Windows 字体比例(100%、125% 和 150%)呢?我需要一些可以在所有 Windows 7 操作系统和语言上运行的可靠工具。


处理可变 DPI 设置的正确方法不是检测它们并手动调整控件的大小。switch声明(对于初学者来说,可能性比您在示例中显示的可能性要多得多if陈述)。

相反,您应该设置AutoScaleMode财产 http://msdn.microsoft.com/en-us/library/system.windows.forms.containercontrol.autoscalemode.aspx您的表格AutoScaleMode.Dpi并让框架为您处理这件事。

将以下代码添加到表单的构造函数中(或在设计时设置此属性):

this.AutoScaleMode = AutoScaleMode.Dpi;

尽管您可能更喜欢使用AutoScaleMode.Font。有关自动缩放的更多信息,请参阅MSDN 文档 http://msdn.microsoft.com/en-us/library/ms229605.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测 Windows 字体大小(100%、125% 和 150%) 的相关文章

随机推荐

  • 解析 XML 并将其导入到 SQL Server 中的表中

    我编写了一个 CLR 程序集 用于将表的数据导出到 XML 文件 现在我想将此数据导入到另一个实例上的临时表中 XML文件结构是这样的
  • 在 Lparallel 库中使用队列 (Common Lisp)

    lparallel 库中队列的基本讨论位于https z0ltan wordpress com 2016 09 09 basic concurrency and parallelism in common lisp part 4a para
  • 禁用模板缓存 Jinja2

    我正在尝试禁用 Jinja2 的模板缓存 我环顾四周 发现有一个cache sizejinja 环境的参数 我正在使用以下内容 app jinja env jinja2 Environment cache size 0 loader jin
  • dnx/dotnetcore 包缓存位置可以更改吗

    我的计算机的 C 驱动器空间不足 我想将 DNX DOTNET 软件包的安装位置更改为 D 驱动器下的位置 包缓存位置可以配置吗 注意 我无法灵活地将我的配置文件位置更改为不同的驱动器 Use the NUGET PACKAGES环境变量并
  • Java比较两个地图

    在java中 我想比较两个地图 如下所示 我们是否有现有的API来执行此操作 Thanks Map
  • 如何修改GitBook中的字体大小?

    正如标题所示 有一个名为 编辑配置 的首选项GitBook https www gitbook io 编辑 它说你应该使用 json 来构建book json 我该如何编写这个文件来修改字体大小 在网上搜索了一下 几乎没有找到任何有用的文章
  • 如何在 Linux Bash 中将 ls 分配给数组?

    array ls d echo array 我有三个目录 ww ee qq 我希望它们位于一个数组中 然后打印该数组 会是这个 array ls d 编辑 参见戈登 戴维森的解决方案 https stackoverflow com a 18
  • 如何在禁用组框时禁用组框文本?

    我面临组框文本的问题 我通过调用 EnableWindow FALSE 禁用了组框 问题是组框标题没有变灰 谁能告诉我为什么会发生这种情况以及如何摆脱这个问题 这似乎是 comctrl32 dll 中的一个错误视觉风格 https lear
  • 当应用程序在后台时,iPhone PresentLocalNotificationNow 不会触发警报和声音

    我有一个应用程序注册位置更新 运行测试 有时当我在应用程序处于后台时进入某个区域时 我会收到带有声音的警报通知 有时我只在通知中心看到通知 而没有收到任何声音和警报 您可以做什么来始终收到声音和警报通知 这就是我的看法 UILocalNot
  • android Rect.intersect 始终为 false

    士兵级 centerX speedX r set centerX centerY 50 50 子弹级 centerX speedX r set centerX centerY 50 50 if Rect intersects r GameS
  • MVC 中的 ViewModel 和与实体框架的一对多关系?

    我有一个用于在数据库中存储有关顾问的信息的应用程序 该模型是一个实体框架模型 数据库表与许多其他表 工作经验 计划 能力区域等 具有一对多关系 现在 当我想在视图中创建一个新的 Consultant 对象时 我实际上只想将 Consulta
  • 如何仅使用串行控制台将二进制闪存文件发送到嵌入式系统?

    我有一个使用 ramdisk 启动的嵌入式 Linux 系统 因此它运行时没有可用的持久存储 它有闪存来存储内核和 ramdisk 唯一的连接是 RS 232 串行登录控制台 所以我受到其内置 busybox 提供的功能的限制 我想检索 r
  • UILabel 文本在更新时重叠?

    在我的应用程序中 我将文本标签的值从初始值 0 更改为触摸事件时递增 有时 但并非总是如此 新值会覆盖在 0 上 这并不酷 这是相关代码 UITableViewCell cell tableView cellForRowAtIndexPat
  • 在 C++ 中获取文本 CSV 文件中的字符串

    我有一个这样的大型 CSV 75 MB 1 3 4 1 5 4 2 4 0 1 11 3 我用这段代码存储我的数据 C风格 include
  • 如何保护 Laravel 环境文件中存储的数据库凭据的安全?

    我最近切换到基于环境的 Laravel 应用程序部署 并决定使用 ENV 将本地和生产服务器的凭据存储在 env 文件中 但是我发现打开调试时会抛出异常显示公开数据库凭据的环境变量 现在我确信调试将始终在生产中关闭 因为这是我的默认设置 然
  • Firebase - 获取用户时权限被拒绝

    我正在尝试使用此代码从 Firebase 数据库中获取用户 但出现此错误 取消错误错误域 com firebase代码 1 权限被拒绝 UserInfo NSLocalizedDescription 权限被拒绝 我的规则应该如何设置 这是代
  • 清单的 Robolectric @Config 路径值

    我正在尝试运行 robolectric 单元测试 但收到错误 因为在路径上找不到 AndroidManifest xml 任何人都可以给我一个 Config 清单值的示例路径 是相对路径还是绝对路径 提前致谢 如果您使用 Maven 来运行
  • Java - 复制 JPG 同时保留所有文件属性

    在保持文件所有属性 创建日期 日期等 的同时移动 复制文件的最佳方法是什么 谢谢 如果您使用的是 Java 7 请使用java nio file Files copy Path source Path target CopyOption o
  • jsp页面多语言支持

    在JSP页面中使用上述指令时 无法在JSP页面中显示俄语和匈牙利语字符 有没有办法在同一个JSP页面中支持俄语和匈牙利语字符 如果我使用charset UTF8 好吧 或者还有其他办法吗 ISO 8859 1 字符集支持only列出的字符h
  • 检测 Windows 字体大小(100%、125% 和 150%)

    我创建了一个应用程序 该应用程序在用户选择 125 或 150 之前都可以完美运行 这会破坏我的申请 后来我找到了通过检测DPI来找到字体大小的方法 在使用中文版 Windows 7 的用户开始使用我的应用程序之前 这种方法一直运行良好 整