按十六进制值排序颜色

Ordering Color by Hex Value

我不知道如何归类这个问题,也没有有效地解释它,但我会尽力的。

我从我的应用程序中收集了一系列随机十六进制代码值。

我想以渐变方式呈现这些颜色,这将(理论上)显示一组颜色的突出性。

例如,如果在我的随机颜色阵列中有更多的蓝色阴影,那么将其放入此渐变中将反映出这一点。

但首先,我需要 "order" 渐变中的颜色紧挨着喜欢的颜色。

我正在使用 C# -- 但在关于如何 map/order/group 十六进制颜色值在一起的理论之后。

感谢您的评论,我使用了评论中的 Hue 方法,结果如下 - 效果很好,如您所见,我的颜色列表中有更多蓝色(已设置动态)再次感谢。

但它仍然存在一个错误——由于某种原因它在重复而不是占据整个高度:((从蓝色到红色应该只有 1 个线性)

(我会为此打开另一个问题)。

我的代码如下(ColorFromString 是我为 写的一个方法):

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 项目中使用了它。 我想你可以自己修改一下。

十六进制代码必须以“#”开头(对于订购很重要)