开发者

C# Get all available FontFamily

开发者 https://www.devze.com 2023-02-17 17:02 出处:网络
I have an input box, and people type a font in and it saves what they type as a JPEG.All works fine.But when they type a font name like \'times new roman\' it has to be capitalised properly to \'Times

I have an input box, and people type a font in and it saves what they type as a JPEG. All works fine. But when they type a font name like 'times new roman' it has to be capitalised properly to 'Times New Roman' or it wont work!

Can I just iterate all the available fonts somehow and present it to them as a dr开发者_高级运维opdown list so there are no spelling problems and they definitely will only be using fonts on the system?


Simply use next code:

FontFamily[] ffArray = FontFamily.Families;
foreach (FontFamily ff in ffArray)
{
    //Add ff.Name to your drop-down list
}


Or you can just bind to it directly:

<ComboBox ItemsSource="{Binding Source={x:Static Fonts.SystemFontFamilies}}" />


I have font lists in several spots within my application so I like to load the list once and reuse the list to bind to the controls.

public List<string> GetFontFamilies()
{
    List<string> fontfamilies = new List<string>();                                   
    foreach (FontFamily family in FontFamily.Families)
    {
        fontfamilies.Add(family.Name);
    }
    return fontfamilies;       

}


This is pretty much the same as Gary's answer but a little more compact:

public static readonly List<string> FontNames = FontFamily.Families.Select(f => f.Name).ToList();
0

精彩评论

暂无评论...
验证码 换一张
取 消