我不知道如何分類這個問題,也沒有有效解釋,但我會盡我所能。訂購顏色的十六進制值
我有一系列從我的應用程序收集的隨機十六進制代碼值。
我想用漸變呈現這些顏色,這將(理論上)顯示出一組顏色的顯着性。
如果在我的隨機顏色數組中有更多的藍色陰影,那麼把它放入這個漸變將反映出這一點。
但首先,我需要將漸變中的顏色「排序」爲顏色旁邊的顏色。
我正在使用C# - 但更多的是在理論之後如何將十六進制顏色值映射/排序/組合在一起。
我不知道如何分類這個問題,也沒有有效解釋,但我會盡我所能。訂購顏色的十六進制值
我有一系列從我的應用程序收集的隨機十六進制代碼值。
我想用漸變呈現這些顏色,這將(理論上)顯示出一組顏色的顯着性。
如果在我的隨機顏色數組中有更多的藍色陰影,那麼把它放入這個漸變將反映出這一點。
但首先,我需要將漸變中的顏色「排序」爲顏色旁邊的顏色。
我正在使用C# - 但更多的是在理論之後如何將十六進制顏色值映射/排序/組合在一起。
感謝您的評論,我使用Hue方法進行評論,結果如下 - 這很好用,正如您可以看到的那樣,顯示我的List of colors中有更多的Blue顏色(它是動態設置的)再次感謝。
,但仍然存在一個bug - 它重複佔用整個高度出於某種原因:(代替(應該僅是1直線從藍調紅)
(我將打開另一個問題。本)
我的代碼如下(ColorFromString是我寫this question的方法):
private Color[] OrderColorByHue(List<string> colors)
{
foreach(string c in colors)
{
Color color = ColorFromString(c); // This was defined in another question of mine :)
float hue = color.GetHue();
hueColors.Add(new KeyValuePair<Color, float>(color, hue));
}
hueColors.Sort((color1, color2) => color2.Value.CompareTo(color1.Value));
Color[] value = hueColors.Select(color => color.Key).ToArray();
return value;
}
希望這有助於別人:)
// GET: Admin/Colors
public ActionResult Index()
{
var colors = db.Colors.OrderBy(a => a.HexCode);
return View(colors);
}
我用它在我的MVC.Net項目。 我想你可以自己修改它。
HexCodes必須以「#」(訂貨重要)
在什麼格式,你有這些價值觀開始呢?它是一個.net Drawing.Color還是隻是文本? – llouk
您可以將它們轉換爲HSV並通過色調進行排序。 –
由於色彩空間爲3d且線性漸變爲1d,因此不可能有實際順序。所以你需要投射3d - > 1d。轉換爲彩色或HSV是一個很好的第一步,但是你將不得不決定..見[這裏是關於色距的討論](http://stackoverflow.com/questions/27374550/how-to-compare-color -object-and-get-nearest-color-in-an-color/27375621?s = 1 | 1.0462#27375621) – TaW