C# 获取所有可用字体族名称

6

我有一个输入框,人们在里面键入字体名称,然后保存为JPEG。这一切都很好。但是如果他们键入一个像“times new roman”这样的字体名称,它必须正确地大写为“Times New Roman”,否则它就不起作用了!

我能不能以某种方式迭代所有可用的字体,并将其呈现给他们作为下拉列表,以便没有拼写问题,并且他们确实只使用系统上的字体?

4个回答

10

直接使用以下代码:

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

这里是一个 Powershell 的一行命令,非常方便,特别是如果你只想要输出:[System.Drawing.FontFamily]::Families - dyslexicanaboko

7

或者您可以直接绑定它:

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


2

我在应用程序的几个位置都有字体列表,因此我希望只加载一次列表并重复使用该列表来绑定控件。

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

}

0
这与Gary的答案基本相同,但更加精简:
public static readonly List<string> FontNames = FontFamily.Families.Select(f => f.Name).ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接