WPF抗锯齿解决方法

10

在WPF中无法关闭反锯齿。但是当WPF字体很小时,我想要去除它们的模糊外观。

一个可能的解决方案是使用.NET 2.0组件。这看起来会失去透明度和Blend支持的功能。虽然从未尝试过。

有人有解决办法吗?有什么缺点吗?

谢谢

6个回答

10

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

TextOptions.TextFormattingMode="Display"

1
那实际上并不是关闭了抗锯齿。它是抗锯齿设置的另一种更清晰的版本。 Aliased选项是TextOptions.TextRenderingMode="Aliased"。 - Koert van Kleef

3

你尝试过在WPF窗口/控件上放置WindowsFormsHost控件吗?这将允许WPF呈现WinForms控件。

更新于2012年11月:此问题和答案已有4年历史。WPF中的文本呈现已经得到改进。请不要在WPF应用程序中放置WinForms控件;那是一种hackish修复字体呈现的方法。它已不再需要。


7
这个回答对于WPF当前的状态说了很多。希望它在VS2010中能有所改善。 ;) - Robert Jeppesen
1
是的,没错,但这个问题已经超过4年了。自那时以来,情况有所改善,特别是WPF字体渲染方面:http://blogs.msdn.com/b/text/archive/2009/08/24/wpf-4-0-text-stack-improvements.aspx - Judah Gabriel Himango

1

微软有一个专门介绍WPF文本渲染的博客,链接在这里WPF Text Blog

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


1

SnapsToDevicePixels对文本渲染没有任何影响。


0

偏移您绘制的对象,如果您不希望其进行抗锯齿处理,则偏移0.5像素。这将导致绘图引擎在实际像素上绘制,而不是在像素边缘上绘制(这是默认设置)。在像素边缘上绘制时,通常会在周围像素上进行抗锯齿处理。

这类似于Mac上的Quarts绘图。

编辑:抱歉,我没有仔细阅读问题。这对字体无效,只适用于形状。但我将保留此评论以供参考。


-3

1
如果对两个完全相同的文本进行了直接比较,并且在SnapsToDevicePixel设置中找不到任何差异。此外,从“模糊”背后的技术原因来看,我无法想象它如何有所帮助。 - David Schmitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接