按调色板排序颜色数组

时间:2011-12-22 16:29:18

标签: c# .net sorting colors

我有一系列颜色:

private static string[] Colors = new string[] {
    "#A2AD00", "#69963B", "#00B2C0", "#009697", "#A31A7E",
    "#7D0063", "#EEAF00", "#EC7A00", "#0097D4", "#006FB4"
};

如何按调色板对颜色进行排序?

抱歉令人困惑的问题。 我想按颜色组(绿色到绿色,红色到红色......)排列这些项目,每个组内部的项目必须按颜色亮度排列。

Link to color groups representation

3 个答案:

答案 0 :(得分:4)

您可以尝试使用颜色列表而不是字符串数组。以下排序功能可以对彩虹的颜色进行排序。

List<Color> myColors = new List<Color>();

为列表添加颜色

myColors.Add (new Color (r,g,b))

colors.Sort(delegate(System.Drawing.Color left, System.Drawing.Color right)
{
  return left.GetBrightness().CompareTo(right.GetBrightness ());
});

答案 1 :(得分:1)

你有一个字符串数组,而不是颜色。虽然这些字符串可以转换为颜色对象,但您无法从中获得调色板。

在索引位图中使用调色板,以便索引n指向特定的颜色;而不是相反。除非你也知道从中获取颜色的索引位图,否则没有其他方式的转换。

换句话说,对于你的问题; “按调色板排序”是有意义的,你至少需要知道从中获取颜色的ColorPalette对象。我猜你的意思是按调色板中的索引排序?在这种情况下,您可以在Entries数组中查找颜色以获取其索引;然后按该索引排序。

答案 2 :(得分:0)

怎么样

    Array.Sort(Colors );
    foreach (string s in Colors )
    {
        Console.WriteLine(s);
    }