(отредактировано 18 января, чтобы добавить, что это не только режим рендеринга шрифта, но и сам шрифт.)
Здесь есть два важных фактора: шрифт и режим форматирования шрифта.
Ваше хост-приложение Windows Forms устанавливает семейство шрифтов по умолчанию «Microsoft Sans Serif» с размером шрифта 8,25pt, который в единицах измерения WPF равен FontSize
из 11. Но в WPF обычно используется другой шрифт -Я использую Windows 7 со стандартной темой Aero, а WPF по умолчанию использует пользовательский интерфейс Segoe с FontSize
из 12.
Так что самая большая причина, по которой вы видите здесь разные результаты, заключается в том, что это два разных шрифта,Добавление FontFamily="Segoe UI" FontSize="12"
к корневому элементу UserControl
делает два примера WPF более подходящими для меня.(Но это, конечно, сделает ваш WPF-текст менее согласованным с текстом в содержащем приложении Windows Forms. Именно по этой причине ElementHost
распространяет выбор шрифта Windows Forms в содержимое WPF.)
До того, как яотредактировав это, я подумал, что это может быть связано с разницей между режимами Ideal
и Display
для рендеринга текста WPF.Поняв, что речь идет в основном о шрифте, я больше не думаю, что это так, но я собираюсь оставить обсуждение этой другой проблемы здесь, потому что все еще полезно для любого, кто пытается заставить свой текст WPF выглядеть в соответствии с их WindowsФормы текстовые.По умолчанию для WPF используется Ideal
, но если вы работаете в приложении Windows Forms, возможно, Display
лучше, потому что это будет выглядеть в соответствии с тем, как Windows Forms обычно отображает вещи.
Вы можетеуправляйте этим в WPF для каждого элемента, добавив:
TextOptions.TextFormattingMode="Display"
(или "Display"
в зависимости от того, какой режим вы хотите).Это присоединяемое свойство было добавлено в WPF v4, чтобы позволить вам выбирать между масштабируемым, но слегка размытым рендерингом текста, который WPF имел с момента его первого выпуска, и искаженным, но четким рендерингом сетки, который Win32 и GDI + (и, следовательно, WindowsФормы) использовать.Это повлияет на элемент, к которому вы примените его, а также на всех его потомков.(Например, если вы установите это значение на StackPanel
, оно должно применяться ко всем элементам на этой панели, если только вы не установили для него другое значение локально на дочерних элементах.)
По умолчанию WPF пытаетсяподдерживать лучшую верность исходному дизайну шрифта, чем Win32 или GDI +.Кроме того, он отображает текст таким образом, что это означает, что он масштабируется последовательно - увеличение размера шрифта, скажем, на 12% увеличит ширину текста на 12% на экране.Это не тот случай в Win32 или GDI +, где вы получаете более сложные нелинейные изменения.
Но многие люди жаловались на увеличение размытости, которое вы получаете в обмен на лучшую точность.Вот почему WPF 4 представил это новое свойство.Установите его на Display
, чтобы получить менее точный, но более четкий рендеринг в старом стиле.
Поскольку вы можете выбрать его для каждого элемента отдельно, вы можете выбрать любой, какой вам нравится внешний вид, для вас жирным шрифтом иваш обычный текст.