【问题标题】:C# Get all available FontFamilyC# 获取所有可用的 FontFamily
【发布时间】:2011-03-17 17:19:58
【问题描述】:

我有一个输入框,人们在其中输入一种字体,它会将他们输入的内容保存为 JPEG。一切正常。但是当他们输入像“times new roman”这样的字体名称时,必须将其正确大写为“Times New Roman”,否则将无法正常工作!

我能否以某种方式迭代所有可用字体并将其作为下拉列表呈现给它们,这样就不会出现拼写问题,而且它们肯定只会使用系统上的字体?

【问题讨论】:

    标签: c# loops fonts font-face font-family


    【解决方案1】:

    只需使用下一个代码:

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

    【讨论】:

    • 为方便起见,这是一个 Powershell 单行,特别是如果您只想要输出:[System.Drawing.FontFamily]::Families
    【解决方案2】:

    或者你可以直接绑定到它:

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

    【讨论】:

      【解决方案3】:

      我的应用程序中的多个位置都有字体列表,所以我喜欢 加载列表一次并重用列表以绑定到控件。

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

      【讨论】:

        【解决方案4】:

        这与 Gary 的答案几乎相同,但更紧凑:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-05
          • 2019-06-13
          • 2019-09-27
          • 1970-01-01
          相关资源
          最近更新 更多