在 WPF中无法关闭抗锯齿。但是我想在 WPF 字体很小的时候消除它们的模糊外观。
一种可能性是使用 .net 2.0 组件。这看起来会失去透明度功能和混合支持。虽然从未尝试过。
有人对此有解决方案吗?它有什么缺点吗?
谢谢
可以使用以下选项从 WPF 4.0 开始关闭 Anti-Alias:
TextOptions.TextFormattingMode="Display"
您是否尝试过将WindowsFormsHost控件放在 WPF 窗口/控件上?这将允许 WPF 呈现 WinForms 控件。
2012 年 11 月更新:这个问题和答案已有 4 年历史。此后,文本呈现在 WPF 中得到了改进。请不要将 WinForms 控件放在 WPF 应用程序中;这是修复字体渲染的一种骇人听闻的方式。它不再需要了。
SnapsToDevicePixels 对文本渲染绝对没有影响。
微软在这里有一个专门介绍 WPF 中的文本渲染的博客 WPF Text Blog
.NET 4.0 中的情况肯定有所改善。
将您绘制的、您不想抗锯齿的对象偏移 0.5 像素。这将导致绘图引擎在实际像素上绘制,而不是在像素边缘绘制(这是默认设置)。在像素边缘绘制时,抗锯齿通常发生在周围像素上。
这类似于 Mac 上的 Quarts 绘图。
编辑:对不起,我没有阅读这个问题。这不适用于字体,仅适用于形状。不过,我会在此处留下评论以供参考。
尝试在窗口的 UI 元素上使用UIElement.SnapsToDevicePixels属性。人们倾向于报告它最适合图形和线条,但我注意到它在文本渲染方面也有所改进。