2009-08-19 19 views

Respuesta

10

usted no puede crear una instancia Media.Fonts, pero yo creo que se pueda obtener un Media.FontFamily así es como lo logré.

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(); 
+3

¿Qué pasa si la fuente no está instalado en el sistema todavía? Tal vez queremos mostrar una vista previa de la fuente antes de la instalación. – SepehrM

+1

¿Qué sucede si mi fuente proviene de un recurso incrustado no instalado en el sistema? – JacobD

5

estoy usando a continuación los códigos

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; 

} 
Cuestiones relacionadas