【问题标题】:Windows Forms C# application - Set font size of form controls to fit the screen when a user choose 125% or 150% for the OS font size?Windows Forms C# 应用程序 - 当用户为操作系统字体大小选择 125% 或 150% 时,设置表单控件的字体大小以适应屏幕?
【发布时间】:2021-03-13 03:51:56
【问题描述】:

我们设计了一个适用于所有分辨率的 Windows 窗体应用程序。我们遇到了这样一种情况,当用户选择 125% 或 150% 的字体大小时,表单中所有控件的字体大小都会增加。我已将屏幕分辨率设置为 1440x900,并将设置更改为 125%,如下面的屏幕截图所示

在机器上进行这些设置并运行应用程序后,我们发现表单中所有控件的字体大小都增加了,并且与其他控件重叠。

您能否建议任何代码/过程来检测操作系统字体大小的增加,即超过 100% 并处理控件的字体大小?

【问题讨论】:

  • 看看这个帖子:stackoverflow.com/questions/5901299/… 这应该可以解决你的问题。
  • @Felixus 我的 Windows 应用程序中的所有表单都使用 AutoScaleMode.Font。我应该将其更改为 AutoScaleMode.Dpi 吗?

标签: c# winforms controls font-size screen-resolution


【解决方案1】:

我会先尝试使用

System.Drawing.SystemFonts.DefaultFont

适用于所有表单元素。当使用不同的显示器、比例和分辨率时,AutoScale.Dpi 可能会导致您的 UI 发生一些奇怪的变化。

【讨论】:

  • System.Drawing.SystemFonts.DefaultFont 设置已正确应用于标签控件,但表单中也存在未应用该设置的 WPF 控件。你能建议需要做什么吗?
  • 尝试将显示正确字体大小的标签的字体系列应用于 wpf 元素。这应该有效。由于我不与 wpf 合作,因此无法给您任何进一步的建议。
  • 您能否建议如何在代码运行时检测到文本大小增加到 125%?
  • 如果系统字体属性在事件之后引发,您可以使用事件处理程序。如果没有,请获取第二个线程或 BackgroundWorker 来检查 systemfonts.default 值。如果它发生变化,您可以引发自定义事件(但这种方法非常糟糕,因为它使用了相对大量的 ram)。
  • 当我将 DPI 缩放比例从 100% 增加到 125% 或 150% 时,标签的字体大小没有增加。标签的字体大小在所有 DPI 缩放中都相同。尽管如此,某些表单的大小不正确,以至于一个控件与另一个控件重叠
猜你喜欢
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 2019-11-30
  • 2017-10-01
相关资源
最近更新 更多