Сглаживание нельзя выключить в WPF. Но я хочу убрать размытый вид шрифтов WPF, когда они маленькие.
Одна из возможностей - использовать компонент .net 2.0. Похоже, он потеряет возможность прозрачности и поддержку Blend. Хотя никогда не пробовал.
У кого-нибудь есть решение для этого? Есть ли у него недостатки?
Спасибо





Вы пробовали разместить элемент управления WindowsFormsHost в окне / элементе управления WPF? Это позволит WPF отображать элемент управления WinForms.
ОБНОВЛЕНИЕ ноябрь 2012 г.: Этому вопросу и ответу 4 года. С тех пор рендеринг текста в WPF улучшился.. Пожалуйста, не помещайте элементы управления WinForms в приложения WPF; это был хакерский способ исправить рендеринг шрифтов. Это больше не нужно.
Да, но этому вопросу больше 4 лет. С тех пор ситуация улучшилась, особенно отрисовка шрифтов WPF: blogs.msdn.com/b/text/archive/2009/08/24/…
Попробуйте использовать свойство UIElement.SnapsToDevicePixels в элементах пользовательского интерфейса вашего окна. Люди склонны сообщать, что он лучше всего работает для графика и линии, но я заметил улучшения в рендеринге текста с его помощью.
Если было выполнено прямое сравнение двух идентичных фрагментов текста и не удалось найти никакой разницы в настройке SnapsToDevicePixel. Кроме того, судя по техническим причинам "размытости", я не могу представить, как это могло бы помочь.
SnapsToDevicePixels абсолютно не влияет на рендеринг текста.
Сдвиньте объекты, которые вы рисуете, которые вы не хотите сглаживать, на 0,5 пикселя. Это заставит механизм рисования рисовать на фактических пикселей, а не рисовать на краю пикселей (что по умолчанию). При рисовании на краю пикселя сглаживание обычно происходит на окружающих пикселях.
Это похоже на рисование Quarts на Mac.
Обновлено: извините, я не прочитал вопрос. Это не работает для шрифтов, только для фигур. Я оставлю комментарий здесь для справки.
У Microsoft есть блог, посвященный рендерингу текста в WPF, здесь Текстовый блог WPF
В .NET 4.0 ситуация определенно улучшилась.
Антиалиас можно отключить, запустив WPF 4.0, с помощью следующей опции:
TextOptions.TextFormattingMode = "Display"
На самом деле сглаживание не отключено. Это другая, более понятная версия настройки сглаживания. Вариант с псевдонимом - TextOptions.TextRenderingMode = "Aliased".
Этот ответ многое говорит о текущем состоянии WPF. Будем надеяться, что в VS2010 он улучшится. ;)