【问题标题】:Different font sizes on different PCs with same resolutions相同分辨率的不同PC上的不同字体大小
【发布时间】:2014-10-25 09:55:49
【问题描述】:

我已经创建了一个 WinForm 桌面应用程序。

我已将它安装在 2 台不同的客户端 PC 上。

在 1 台 PC 上,字幕适合其控件。 另一方面,标签没有正确调整大小。

我检查了每台客户端 PC 上的分辨率,预计会有差异,但在 1920x1080 的分辨率上它不适合,而在 1680x1050 的分辨率上它确实适合。

为了让我的开发 PC 上的事情变得更奇怪,分辨率是 1920x1080,是的,标签确实合适。

表单和标签的 AutoSize 为“真”。

我错过了什么?

【问题讨论】:

  • 不确定,但这似乎与ehow.com/how_5949822_enlarge-fonts-windows.html有关
  • 嗨,是的,你是对的。谢谢。解开了谜团。只需要一个编程解决方案,因为用户想要使用他们的字体设置:(
  • @HansPassant 嗨,谢谢。所以我能看到的唯一设置是表单控件上的 AutoScaleMode。我猜是这个意思?
  • 嗯,我最初确实将它设置为 DPI。那么标签的什么属性可以让我从字体中继承?谢谢

标签: c# winforms


【解决方案1】:

另一方面,标签没有正确调整大小

不,它是完全相反的。它确实调整了大小,为文本留下了足够的空间。问题是,文字太宽了。

这里发生的问题不止一个。起点是另一台机器以不同的 DPI 设置运行。每英寸点数,它决定了字体大小(例如 10 点)如何映射到屏幕上的像素。你有一台不错的显示器,一台 1920 x 1080 像素的高分辨率显示器。为了保持文本可读性,您需要 10 个点来占用更多像素。所以你增加了 DPI 设置。在更高版本的 Windows 上很容易做到,您可能将滑块移动到 125%。有效 DPI 为每英寸 120 点。

但是,您的程序在一台旧机器上运行,该机器仍具有旧设置 (100% = 96 dpi)。这往往会导致事故,您避免了最常见的事故,因为表单正确地重新调整了自身。它缩小了自身以匹配较低的 DPI 设置。布局仍然正确,标签和文本框的大小和位置都正确。

但是您可以看到位图出现了问题,它现在太大了,太适合空间了。这里不是最讨厌的副作用。否则不容易修复,要查看整个位图,它也必须缩小,这会导致它变得模糊并丢失细节。唯一完全干净的解决方法是使用 两个 位图,每个位图都与目标机器的 dpi 相匹配。不好玩,经常被跳过。

转到您抱怨的问题,在不同 dpi 设置下的文本渲染也可能是一个问题。问题是文本的 height 缩放得很好,但 width 没有。技术术语是文本渲染与分辨率无关。主要问题是像素网格拟合,这是一种用于在低显示器分辨率下使文本更具可读性的技术。在 TrueType 提示的帮助下,字母的形状被拉伸,以便字符的词干准确地落在监视器像素上。这大大提高了可读性,但当然副作用是在这种低分辨率显示器上文本会更宽。

但是你的文字太离谱了,需要另一种解释。这里最可能的不幸是您使用了旧机器上不可用的字体。操作系统现在必须回退到替代字体,并且它的音调与您的原始字体非常不同。我看不到您的代码,但我大致猜测从 Segoe 到 Microsoft Sans Serif 的映射。

此类问题没有简单的解决方案,您需要注意这一点。一个基本准则是,扩大规模几乎从来都不是问题,缩小规模则麻烦得多。因此,以 96 dpi 运行您的开发机器通常是一个好主意,当然除了不便之外。需要在较旧的操作系统上进行测试,或者使用强烈声明的先决条件(例如不支持 XP)。然而,要求比 96 dpi 更高的分辨率仍然是不合理的,许多机器仍处于这种传统设置。至少不是因为改变它会导致很多程序行为不端。 96 dpi 一直是方式的默认设置太久了,但是那些日子已经过去了。

【讨论】:

  • 您好,感谢您提供如此全面的回复。我意识到该字体可能不可用,因此我切换到 Microsoft Sans Serif 系统字体。客户端 PC 上的 DPI 为 125%。我的开发 PC 上的那个是 100%。如果在客户端 PC 上切换到 100%,那么一切都很好。但是,我仍然有针对具有不同 DPI 的 PC 的问题。 :(
  • 叹了口气,我不应该从屏幕截图中调试代码。
  • 哈哈。您最初是对的,它不是我更改的系统字体。我只是没有更新截图,我应该(道歉)。这对我来说是新的这些问题很抱歉我的问题不够全面。顺便说一句,我认为您的解释和可能的原因非常好。我会(并且可能仍然会这样做)接受您的回答我只是希望有人可以提出解决方案。正如你所说,这并不容易。,
猜你喜欢
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 2012-09-19
  • 2015-10-15
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
相关资源
最近更新 更多