按调色板排序颜色数组

本文关键字:数组 颜色 排序 调色板 | 更新日期: 2023-09-27 18:18:32

我有颜色数组:

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

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

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

(链接到颜色组表示)

按调色板排序颜色数组

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

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 ());
});

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

在索引位图中使用调色板,因此索引n指向特定的颜色;而不是反过来。除非您还知道颜色取自的索引位图,否则无法进行其他方式的转换。

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

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