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();
精彩评论