繁体   English   中英

WPF 抗锯齿解决方法

[英]WPF Anti aliasing workaround

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

一种可能性是使用 .net 2.0 组件。 这看起来会失去透明度功能和混合支持。 虽然从未尝试过。

任何人都有解决方案? 它有什么缺点吗?

谢谢

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

TextOptions.TextFormattingMode="Display"

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

2012 年 11 月更新:这个问题和答案已有 4 年历史。 文本渲染在 WPF 中得到了改进 请不要在 WPF 应用程序中放置 WinForms 控件; 这是一种修复字体渲染的黑客方法。 不再需要它了。

SnapsToDevicePixels 对文本渲染绝对没有影响。

微软有一个专门介绍 WPF 中的文本渲染的博客 WPF Text Blog

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

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

这类似于 Mac 上的 Quarts 绘图。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM