2011-12-22 32 views
-1

我有颜色的排列:排序的颜色阵列通过调色板

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

我怎样才能通过调色板进行排序的颜色?

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

Link to color groups representation

+4

给预期排序列表 – sll 2011-12-22 16:31:24

+1

作为@sll说,没有办法,这个问题可以建设性地回答不知道,如果你应该考虑红色“大于”蓝调等。 – Yuck 2011-12-22 16:33:44

+1

获得最高的R,G,B和组。这大致按原色分组。对于亮度,按灰度排序(0.299 * R + 0.587 * G + 0.114 * B)。 – 2011-12-22 19:14:32

回答

1

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

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

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

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

怎么样

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