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