C # Получить все доступные FontFamily - PullRequest
5 голосов
/ 17 марта 2011

У меня есть поле ввода, и люди вводят шрифт, и он сохраняет то, что они печатают в формате JPEG.Все работает отлично.Но когда они набирают имя шрифта вроде 'times new roman', оно должно быть написано с заглавной буквы как 'Times New Roman', иначе оно не будет работать!

Могу ли я просто как-то перебрать все доступные шрифты и представить его имкак раскрывающийся список, чтобы не было проблем с орфографией, и они определенно будут использовать только шрифты в системе?

Ответы [ 4 ]

9 голосов
/ 17 марта 2011

Просто используйте следующий код:

FontFamily[] ffArray = FontFamily.Families;
foreach (FontFamily ff in ffArray)
{
    //Add ff.Name to your drop-down list
}
7 голосов
/ 17 марта 2011

Или вы можете просто привязать к нему напрямую:

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

2 голосов
/ 17 марта 2011

У меня есть списки шрифтов в нескольких местах в моем приложении, поэтому мне нравится загрузить список один раз и повторно использовать список для привязки к элементам управления.

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

}
0 голосов
/ 10 февраля 2013

Это почти совпадает с ответом Гэри, но немного более компактно:

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