我有一个小应用程序,可以获取所有Windows字体的列表。然后,我可以选择一个并显示其所有字符。一直工作,直到我发现我有一个问题,并非所有字体都有FontStyle:Regular。没问题我可以做一个检查,但这是我遇到问题的地方,当我启动系统似乎有FontStyle:常规作为其默认值,我不能改变它所以如果我运行下面的代码文本" Aharoni& #34;在我的组合框中选择它告诉我,不支持常规。如何让它忽略样式或强制样式成为粗体使用的样式?
var cvt = new FontConverter();
Font fname = cvt.ConvertFromString(cmbobx_fontname.Text) as Font;
如果我不能这样做,那么是否可以获得所选字体支持的样式?
答案 0 :(得分:0)
FontFamily类有一个检查样式是否可用于字体的方法 - 所以不要尝试直接创建Font,而是先创建一个FontFamily实例&通过风格进行交流,直到找到支持的风格,例如
FontFamily fontf = new FontFamily("Aharoni");
System.Drawing.FontStyle fs = System.Drawing.FontStyle.Regular;
System.Drawing.Font font;
if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Regular))
fs = System.Drawing.FontStyle.Regular;
else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Bold))
fs = System.Drawing.FontStyle.Bold;
else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Italic))
fs = System.Drawing.FontStyle.Italic;
else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Strikeout))
fs = System.Drawing.FontStyle.Strikeout;
else if (fontf.IsStyleAvailable(System.Drawing.FontStyle.Underline))
fs = System.Drawing.FontStyle.Underline;
else
throw new Exception("No Font Styles Available");
font = new System.Drawing.Font(fontf, 10, fs);
你可以遍历FontStyle枚举 - 而不是像我一样使用if / else。