我正在开发一个WPF应用程序,但我已经注意到,在某些字体大小的文本不作为很好地渲染为你在控制面板中看到的样品 - >字体。 我使用的是大的Segoe UI字体( FontSize="36"
),而且效果上直立线条更加明显,如字母“U”可能会在比另一侧略厚。 )。
字体质量提高在特定字体大小,例如FontSize="48"
(我相信是36pt的等价物),但使用的字体大小的有限数量并不总是可行的。
我可以提高通过应用以下属性到TextBlock的字体质量: -
TextOptions.TextFormattingMode="Display" TextOptions.TextRenderingMode="ClearType"
鉴于质量的改善我很好奇,想知道为什么WPF并不适用于所有文字做到这一点,或者是它归结为表现呢? 我想创建一个全球性的风格,这适用于所有控件,还是将导致一个问题?
(我试着上传的截图,但因此必须在低质量存储图像,你不能真正做出来的字体问题)。
以下是博客文章 ,该文WPF团队写了此功能。
需要注意的TextFormattingMode
:
理想理想的文字指标已使用自推出WPF的格式化文本的指标。 这些指标导致字形的形状保持与字体文件的轮廓高保真度。 创建字形位图或定位相对于彼此的字形时字形最终配置,并不考虑。
显示在这个新的格式模式,WPF使用GDI兼容的文本指标。 这确保了每个字形具有多个整体的像素的宽度和被定位在整个像素。 使用GDI兼容文本度量也意味着,字形大小和断行是类似于基于GDI框架。 这就是说,字形大小并不是唯一的输入到由WPF使用的换行算法。 即使我们使用相同的衡量标准为GDI,我们断行不会是完全一样的。
由于这些特性在.NET 4.0中新增的 ,它们仍保持着原始WPF算法默认情况下,这是理想的模式。
对于TextRenderingMode
汽车 ,除非系统设置已经被设置在机器上专门禁用ClearType的这种模式将使用ClearType。
别名无抗锯齿将用来绘制文本。
灰度灰度抗锯齿将用来绘制文本。
ClearType的 ClearType的antialising将用来绘制文本。
由于Auto
是默认情况下,你一般会得到ClearType
渲染。
现在,因为这些都是附加属性,它们继承 ,你可以将它们设置在根目录Window
。 无需创建一批的Style
秒。
用大量的数据处理(向上10000项)时的ClearType被打开时,我已经注意到小的性能问题。 更改TextFormattingMode可以显示的没有明显的性能影响。
这就是说,在我所有的WPF应用程序我使用全局样式,以提高文本呈现,除非对性能的影响大到足以使UI不觉黏手。