2011-12-22 74 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); 
    }