【问题标题】:How to check if a font supports a specific style如何检查字体是否支持特定样式
【发布时间】:2011-09-02 07:50:13
【问题描述】:

更改应用程序字体时出现以下异常,因为我在应用程序的一部分中使用了删除线,而某些字体不支持它:

我使用字体对话框更改我的应用程序字体。在将所选字体分配给我的应用程序后,我需要检查所选字体是否支持删除线样式

推荐的方法是什么?我知道我可以创建具有该样式的字体并捕获异常,但是有没有更优雅的方法来做到这一点?

提前致谢。


编辑:用户选择字体,不需要删除线。在那一刻,我需要检查字体是否支持样式删除,因为我在应用程序的一部分中创建了删除字体。如果字体不支持删除线样式将不允许用户选择该字体。

【问题讨论】:

  • 例外就是你所得到的。没什么好担心的,这很特别。

标签: c# .net winforms fonts


【解决方案1】:

更新:(以反映初始帖子中的更新):

InstalledFontCollection ifc = new InstalledFontCollection();
for (int i = 0; i < ifc.Families.Length; i++)
    {
         if (ifc.Families[i].IsStyleAvailable(FontStyle.StrikeOut))
         {
             //add particular font with this family to your "font selector"
         }
    }

【讨论】:

  • 对不起,也许我没有正确解释我的问题。查看我的编辑
【解决方案2】:

如果您使用标准的Font 类,则可以使用Font.Strikeout 属性:

//Gets a value that indicates whether this Font specifies a horizontal line through the font.
public bool Strikeout { get; }

【讨论】:

  • 对不起,也许我没有正确解释我的问题。查看我的编辑
  • @Daniel Peñalba 您可以为用户选择创建字体对象,并获取属性的值。如果是false,则必须禁止字体选择。
  • 查看 Andrei 的答案,我的意思就是这样。
  • @Daniel Peñalba 他的回答对你有帮助吗?
【解决方案3】:

最后我使用了以下内容:

    private bool SupportStrikeout(Font font)
    {
        try
        {
            using (Font strikeout = new Font(font, FontStyle.Strikeout))
            {
                return true;
            }
        }
        catch (ArgumentException)
        {
            return false;
        }
    }

【讨论】:

    猜你喜欢
    • 2014-06-01
    • 2012-02-04
    • 2011-07-13
    • 2018-06-05
    • 2020-12-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多