Обходное решение WPF Anti alialasing

Сглаживание не может быть отключено в WPF. Но я хочу удалить размытый вид шрифтов WPF, когда они маленькие.

Одна из возможностей - использовать компонент .net 2.0. Похоже, что он потеряет возможность прозрачности и поддержку Blend. Никогда не пробовал, хотя.

У кого-нибудь есть решение для этого? Любые недостатки?

Спасибо

Ответ 1

Попробовали ли вы установить элемент управления WindowsFormsHost в окне/управлении WPF? Это позволит WPF отображать элемент управления WinForms.

ОБНОВЛЕНИЕ Ноябрь 2012. Этот вопрос и ответ 4 года. С тех пор улучшена обработка текста в WPF. Пожалуйста, не помещайте элементы управления WinForms в приложениях WPF; это был хакерский способ исправить рендеринг шрифтов. Он больше не нужен.

Ответ 2

Анти-Alias ​​можно отключить, начиная с WPF 4.0 со следующей опцией:

TextOptions.TextFormattingMode="Display"

Ответ 3

SnapsToDevicePixels абсолютно не влияет на рендеринг текста.

Ответ 4

У Microsoft есть блог, посвященный текстовому рендерингу в WPF здесь Текстовый блог WPF

В .NET 4.0 определенно улучшилось.

Ответ 5

Сдвиньте объекты, которые вы рисуете, которые не хотите сглаживать, на 0.5px. Это заставит механизм рисования рисовать фактические пиксели, а не рисовать по краю пикселей (что является значением по умолчанию). При рисовании края пиксельного сглаживания обычно происходит на окружающих пикселях.

Это похоже на чертеж Quarts на Mac.

Изменить: Извините, я не прочитал вопрос. Это не работает для шрифтов, только для фигур. Я оставлю здесь комментарий для справки.

Ответ 6

Попробуйте использовать свойство UIElement.SnapsToDevicePixels в элементах интерфейса вашего окна. Люди склонны сообщать, что он лучше всего работает для графики и строк, но я также заметил улучшение в обработке текста.