【问题标题】:List of System Colors Property系统颜色属性列表
【发布时间】:2017-08-10 13:58:27
【问题描述】:

我正在寻找一个返回系统颜色列表的属性。我查看了SystemColorsColors 类。我找不到一个只会返回颜色列表的属性。

我知道有一些解决方案可以获取系统颜色,但我宁愿使用内置属性。

奇怪的是Fonts 类具有返回System 列表的SystemFontFamilies 属性FontsColors 没有这样的属性。

【问题讨论】:

  • [Enum.GetValues() 返回类型] 的可能重复项。 Colors 枚举可用于为您提供此数组。然后你可以用这些值做你想做的事。(stackoverflow.com/questions/1398664/enum-getvalues-return-type)
  • 你用的是什么平台的winform、wpf、webapp等?
  • @krillgar 我不认为 OP 想要 System.Colors 的所有枚举值,但窗口默认使用的定义颜色用于边框、标题栏、背景等
  • @krillgar 颜色是 System.Windows.Media 中的类而不是枚举
  • @John 我正在使用 wpf

标签: c# wpf colors


【解决方案1】:

这取决于您要查找的内容以及您是否有权访问 System.Drawing(例如,在 Azure 中不可用)。

System.Drawing.SystemColors 将告诉您操作系统用于绘制系统部分的颜色。

System.Drawing.SystemColors 类的每个属性都是一个 System.Drawing.Color 结构,它是 Windows 显示的颜色 元素。

或者您可以使用 System.Drawing.KnownColor 枚举使用Enum.GetValues() Return Type 的颜色列表。

由于问题已更新以显示您正在使用,因此请参阅有关如何访问颜色的参考: https://blogs.msdn.microsoft.com/wpf/2010/11/30/systemcolors-reference/

【讨论】:

    【解决方案2】:

    你可以做这样的事情,这是我自己的一个使用反射的颜色下拉控件的例子

    private Dictionary<string, Color> colours = typeof(Colors)
        .GetRuntimeProperties()
        .Select(c => new
        {
            Color = (Color)c.GetValue(null),
            Name = string.Join(" ", splitCapital(c.Name))
        }).ToDictionary(x => x.Name, x => x.Color);
    

    您还需要以下“使用”

    using System.Reflection;
    

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2012-01-30
      • 1970-01-01
      相关资源
      最近更新 更多