Обходной путь сглаживания WPF


person Artur Carvalho    schedule 22.08.2008    source источник


Ответы (6)


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

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

person Judah Gabriel Himango    schedule 22.08.2008
comment
Этот ответ многое говорит о текущем состоянии WPF. Будем надеяться, что в VS2010 он улучшится. ;) - person Robert Jeppesen; 04.09.2009
comment
Да, но этому вопросу больше 4 лет. С тех пор ситуация улучшилась, особенно отрисовка шрифтов WPF: blogs.msdn.com/b/text/archive/2009/08/24/ - person Judah Gabriel Himango; 14.11.2012

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

TextOptions.TextFormattingMode="Display"
person Wolkenjaeger    schedule 04.08.2011
comment
На самом деле сглаживание не отключено. Это другая, более понятная версия настройки сглаживания. Вариант с псевдонимом - TextOptions.TextRenderingMode = Aliased. - person Koert van Kleef; 04.07.2014

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

person Community    schedule 10.11.2008

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

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

person ScottB    schedule 23.06.2011

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

Это похоже на рисование Quarts на Mac.

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

person Ludvig A. Norin    schedule 04.10.2009

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

person OwenP    schedule 27.08.2008
comment
Если было выполнено прямое сравнение двух идентичных фрагментов текста и не удалось найти никакой разницы в настройке SnapsToDevicePixel. Кроме того, судя по техническим причинам размытости, я не могу представить, как это могло бы помочь. - person David Schmitt; 10.10.2008