WPF WindowsFormsHost создает нечеткий текст
Я принимаю winforms DataGridView
внутри WindowsFormsHost
в окне WPF. Функциональность в порядке, но текст в ячейках сетки выглядит немного более размытым. Обычно текст WinForms имеет очень мало сглаживания.
Как я могу получить DataGridView
текст, чтобы выглядеть как обычно на Windows Form
или хотя бы острее будет? Я пытался играть с TextOptions.TextFormattingMode
а также SnapsToDevicePixels
настройки WindowsFormsHost
, но не вижу никакой разницы.
В качестве примера того, что я имею в виду, здесь два скриншота:
Datagridview
внутри WPF WindowsFormsHost
:
DataGridView
в Windows Forms:
1 ответ
WPF не должен влиять на внешний вид размещенного содержимого WinForms/Win32. Существует ограничение "воздушного пространства", которое диктует, что один пиксель окна может принадлежать только одному графическому API, и он может быть нарисован только этим API. Следовательно, содержимое WinForms рисуется WinForms/GDI+, даже если оно размещено в WPF. Это объясняет, почему размещаемое содержимое будет отображаться поверх любого содержимого WPF в том же окне, даже если содержимое WPF расположено перед ним.
Изменение свойств рендеринга WPF, таких как TextFormattingMode
не может повлиять на внешний вид содержимого взаимодействия. Вы должны смотреть на свойства макета / рендеринга размещенного контента WinForms.
Обновить
Предположительно, нечеткий эффект заключается в том, что WPF по умолчанию использует оттенки серого AA для DataGridView
, в Paint
и / или CellPainting
события из DataGridView
, установив подсказку графического текста в cleartype:
e.Graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit
устранена большая часть нечеткости.