Итак, я знаю, что существует несколько потоков для того, как сделать преобразование между вышеупомянутыми системами. И я знаю, что они не от 1 до 1. Тем не менее, я надеюсь, что есть способ заставить все работать.Преобразование System.Windows.Forms.Font в System.Windows.Media.FontFamily не работает для нерегулярных стилей
Шрифты, о которых идет речь, являются лишь примерами, так как я уверен, что у других есть такая же проблема, Segoe UI просто мой шрифт по умолчанию. Что не работает, когда я выбираю Segoe UI Semibold Italic или какой-либо другой промежуточный шрифт.
Вот мой код преобразования:
// Font family
FontFamilyConverter ffc = new FontFamilyConverter();
TextContent.FontFamily = (System.Windows.Media.FontFamily)
ffc.ConvertFromString(fontDialog.Font.Name);
// Font size
TextContent.FontSize = fontDialog.Font.Size;
// Bold?
TextContent.FontWeight = (fontDialog.Font.Bold ? FontWeights.Bold : FontWeights.Normal);
// Italic?
TextContent.FontStyle = (fontDialog.Font.Italic ? FontStyles.Italic : FontStyles.Normal);
// Underline and strikethrough?
TextContent.TextDecorations = new TextDecorationCollection();
if (fontDialog.Font.Strikeout) {
TextContent.TextDecorations.Add(TextDecorations.Strikethrough);
}
if (fontDialog.Font.Underline) {
TextContent.TextDecorations.Add(TextDecorations.Underline);
}
// Color
TextContent.Foreground = new SolidColorBrush(
System.Windows.Media.Color.FromArgb(fontDialog.Color.A,
fontDialog.Color.R,
fontDialog.Color.G,
fontDialog.Color.B)
);
С помощью отладчика, я знаю, что свойство Курсив должным образом установлен, но шрифт не приходит через, как Semibold Italic
это просто приходит через, как Semibold
. Если (когда в отладчике) я меняю FontFamily
на "Segoe UI Semibold Italic"
, тогда он работает.
Есть ли что-то, что мне не хватает, чтобы иметь возможность правильно найти все стили?
Спасибо.
Примечание: Я знаю, что размер не работает правильно. Просто не зафиксировал его еще
вот аналогичный вопрос: http://stackoverflow.com/questions/1297772/how-can-i-convert-a-system-drawing-font-to-a-system-windows-media-fonts-or- typef – MethodMan
@MethodMan, я видел это. Он не учитывает, когда фактическое имя должно быть изменено для элемента управления WPF, чтобы вытащить правильный шрифт. Я уже использую методы из этого потока уже в моем коде. – David
Я понимаю, что вы говорите ... так работает с известными именами шрифтов в этой строке 'TextContent.FontFamily = (System.Windows.Media.FontFamily) ffc.ConvertFromString (fontDialog.Font.Name);' ...? – MethodMan