WPF模糊字体问题- 解决方案

15 浏览
0 Comments

WPF模糊字体问题- 解决方案

问题在以下链接中描述并演示:

说明:WPF中的文本清晰度。 此链接具有字体比较。

我想收集此问题的所有可能解决方案。 Microsoft Expression Blend使用WPF,但字体看起来可读。

  • 像Microsoft Expression Blend中的深色背景
  • 增加字体大小并更改字体(Calibri…)[链接]
  • 嵌入窗体 [链接]
  • 使用GDI+和/或Windows Forms TextRenderer类将文本呈现为位图,然后将该位图呈现为WPF控件。 [链接]

还有其他的解决方案吗?

这将在VS2010(和WPF4)beta 2中修复

看起来问题终于解决了!

Scott Hanselman的ComputerZen.com:WPF和文本模糊,现在完全清晰

admin 更改状态以发布 2023年5月22日
0
0 Comments

技术背景

Windowsclient.net 上的 WPF Text Program Managers 之一撰写了一篇关于 WPF 文本渲染的深度文章: WPF 中的文本清晰度

问题归结为,WPF 需要一个线性可伸缩的字体渲染器以获得平滑的动画效果。而 Pure ClearType 则取得了相当大的自由,在字体上推动垂直茎杆进入下一个像素。

如果将传统的“级联”模式进行对比,差异是显然的。WinForms 在左下方,WPF 在右上方:


(来源: black.co.at)

虽然我并不喜欢 WPF 的字体渲染特性,但我可以想象如果动画跳跃就像 Winforms cascade 那样会引起怎样的抱怨。

通过注册表进行调整

我特别感兴趣的是指向 MSDN 文章 "ClearType Registry Settings"的链接,该文章解释了注册表中可能进行的用户侧调整:

  • ClearType 等级: 亚像素提示的数量
  • Gamma 等级
  • 像素结构: 在显示像素中颜色条纹的排列方式
  • 文本对比度等级: 调整字形茎的宽度使字体更加粗重

调整这些设置并没有真正改善潜在的问题,但可以通过减少对敏感用户的颜色出血效应帮助解决问题。

另一个方法

文章中给出的最好建议是增加字体大小并更改字体。相对于标准 Segoe UI,Calibri 对我来说更好。由于它作为 Web 字体而广受欢迎,我也试过 Verdana,但在动画字体大小时 14pt 和 15pt 之间有一个很明显的重量跳跃。

WPF 4.0

WPF 4 将具有改进的支持,以影响字体的渲染。WPF Text Blog 上有一篇文章解释了这些变化。最突出的是,现在(至少)有三种不同类型的文本渲染:

text rendering comparison
(来源: windows.net)

这应该足以让每个设计师用上绳子了。

0
0 Comments

.NET 4终于有了解决WPF文本呈现质量差的方案,但它被很好地隐藏了起来。为每个窗口设置以下内容:

TextOptions.TextFormattingMode="Display"

默认值是“Ideal”,但实际上并不是该名称所暗示的内容。

TextOptions中还有两个选项TextHintingMode和TextRenderingMode,但它们都有合理的默认值。

0