如何将System.Drawing.font转换为System.Windows.Media.Fonts或TypeFace?

如何将System.Drawing.Font转换为System.Windows.Media.FontsTypeFace

或者如何从System.Drawing.Font的实例生成System.Windows.Media.FontsTypeFace的实例?

你不能实例化Media.Fonts ,但我认为你可以获得Media.FontFamily,这就是我实现它的方式。

 using System.Drawing; using Media = System.Windows.Media; Font font = new Font(new System.Drawing.FontFamily("Comic Sans MS"), 10); //option 1 Media.FontFamily mfont = new Media.FontFamily(font.Name); //option 2 does the same thing Media.FontFamilyConverter conv = new Media.FontFamilyConverter(); Media.FontFamily mfont1 = conv.ConvertFromString(font.Name) as Media.FontFamily; //option 3 Media.FontFamily mfont2 = Media.Fonts.SystemFontFamilies.Where(x => x.Source == font.Name).FirstOrDefault(); 

我正在使用以下代码

 private static Typeface NewTypeFaceFromFont(System.Drawing.Font f) { Typeface typeface = null; FontFamily ff = new FontFamily(f.Name); if (typeface == null) { typeface = new Typeface(ff, (f.Style == System.Drawing.FontStyle.Italic ? FontStyles.Italic : FontStyles.Normal), (f.Style == System.Drawing.FontStyle.Bold ? FontWeights.Bold : FontWeights.Normal), FontStretches.Normal); } if (typeface == null) { typeface = new Typeface(new FontFamily("Arial"), FontStyles.Italic, FontWeights.Normal, FontStretches.Normal); } return typeface; }