Обходное решение 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 в элементах интерфейса вашего окна. Люди склонны сообщать, что он лучше всего работает для графики и строк, но я также заметил улучшение в обработке текста.