关于.net:WPF反锯齿解决方法

关于.net:WPF反锯齿解决方法

WPF Anti aliasing workaround

在WPF中无法关闭抗锯齿。 但是我想消除WPF字体很小时的模糊外观。

一种可能性是使用.net 2.0组件。 看起来它将失去透明度功能和Blend支持。 从来没有尝试过。

有人对此有解决方案吗? 有什么缺点吗?

谢谢


可以使用以下选项从WPF 4.0开始关闭抗锯齿功能:

1
TextOptions.TextFormattingMode="Display"

您是否尝试过将WindowsFormsHost控件放在WPF窗口/控件上?这将允许WPF呈现WinForms控件。

2012年11月更新:这个问题已有4年的历史了。此后,在WPF中改进了文本呈现。请不要将WinForms控件放在WPF应用程序中;这是修复字体渲染的一种怪异方式。不再需要。


微软在这里有一个专门致力于WPF中文本渲染的博客WPF Text Blog

.NET 4.0中的情况肯定有所改善。


SnapsToDevicePixels对文本呈现完全没有影响。


将您不想画出锯齿的对象偏移0.5px。这将导致绘制引擎绘制实际像素,而不是绘制像素边缘(默认设置)。在像素的边缘绘制时,通常会在周围的像素上发生抗锯齿。

这类似于Mac上的Quarts绘图。

编辑:抱歉,我没有阅读问题。这不适用于字体,仅适用于形状。不过,我将在此留下评论以供参考。


尝试在窗口的UI元素上使用UIElement.SnapsToDevicePixels属性。人们倾向于说它最适合图形和线条,但是我注意到它在文本渲染方面也有所改进。


推荐阅读