C#与WPF编程:获取系统字体列表及颜色的实用代码

远山来客
远山来客
发布时间:2026-10-13 | 4人浏览过
原创

在开发桌面应用程序时,经常需要动态加载系统中已安装的字体列表供用户选择,或者获取预设的颜色集合用于界面配色。本文整理了在C#和WPF环境中获取这些资源的具体代码实现。

获取系统中安装的所有字体

无论是使用标准的Windows Forms还是WPF框架,都可以借助 System.Drawing.Text.InstalledFontCollection 类来获取当前操作系统上注册的所有字体。以下是两种常见的处理写法。

第1步:使用WPF环境获取字体名称

目的:快速获取字体数组并输出或绑定到UI控件。
入口/类型: System.Drawing.Text.InstalledFontCollection
动作:实例化后读取 Families 属性,遍历结果。

System.Drawing.Text.InstalledFontCollection font = new System.Drawing.Text.InstalledFontCollection();
System.Drawing.FontFamily[] array = font.Families;
foreach (var v in array)
{
    // 在此处将 v.Name 添加到 ListBox、ComboBox 等数据源中
    MessageBox.Show(v.Name);
}

第2步:标准C#方法获取并存储字体

目的:将字体名称收集到列表中以便后续排序或筛选。
入口/参数: ArrayList(适用于旧版兼容)或 List<string>。
动作:通过索引遍历 FontFamily 数组并提取 Name 属性。

InstalledFontCollection MyFont = new InstalledFontCollection();
FontFamily[] MyFontFamilies = MyFont.Families;
ArrayList list = new ArrayList();
int Count = MyFontFamilies.Length;
for(int i = 0; i < Count; i++) 
{
    string FontName = MyFontFamilies[i].Name;
    list.Add(FontName); // 注意:建议使用泛型 List 替代 ArrayList
}

获取预定义的颜色集

在WPF和WinForms中,系统提供了丰富的默认颜色常量。根据项目需求,可以通过反射机制或枚举类型来获取这些颜色名称。

第3步:WPF中通过反射获取Brushes颜色

目的:获取 System.Windows.Media.Brushes 命名空间下所有静态定义的实体画笔(SolidColorBrush),这些对象本身即包含颜色信息。
入口: Type 反射。
动作:获取公共静态属性,提取属性名作为颜色标识。

Type type = typeof(System.Windows.Media.Brushes);
System.Reflection.PropertyInfo[] info = type.GetProperties();
foreach (System.Reflection.PropertyInfo pi in info)
{
    string colorName = pi.Name; 
    // 例如:"AliceBlue", "Black" 等
}

第4步:C# WinForms中使用 KnownColor 枚举

目的:获取 GDI+ 定义的标准颜色枚举值,常用于 Web 表单或传统控件的数据绑定。
入口: System.Drawing.KnownColor 枚举。
动作:使用 Enum.GetValues 获取枚举实例列表,并转换为 ListItem。

Array colors = System.Enum.GetValues(typeof(KnownColor));
foreach(object colorName in colors)
{
    ListItem tmp = new ListItem(colorName.ToString(), colorName.ToString());
    this.styleColor.Items.Add(tmp); // 此处假设 styleColor 为 DropDownList 控件
}

注意事项与补充说明

  • 命名空间引用:使用字体相关功能需确保项目中引用了 System.Drawing.dll。
  • 性能建议:字体和颜色获取操作属于一次性初始化工作,建议在应用启动或页面加载时缓存结果,避免重复创建 InstalledFontCollection 实例。
  • 现代替代方案:对于C#新项目,推荐使用 List<T> 替代 ArrayList,并使用LINQ简化集合查询逻辑。

以上就是C#与WPF获取本机字体和颜色详细内容的介绍,更多关于C# UI开发技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表