按十六进制值排序颜色

时间:2016-05-27 10:55:37

标签: c# colors gradient rgb color-theory

我不确定如何对这个问题进行分类,也不确定如何解释,但我会尽我所能。

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

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

如果在我的随机颜色数组中有更多蓝色阴影,那么将它放入此渐变将反映出来。

但首先,我需要将渐变中的颜色“排序”为相似的颜色。

我正在使用C# - 但更多的是在关于如何将Hex颜色值映射/排序/分组的理论之后。

2 个答案:

答案 0 :(得分:1)

感谢您的评论,我使用了Hue方法作为评论,结果如下 - 这很有效,因为您可以看到显示我的颜色列表中有更多蓝色(动态设置)再次感谢。

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

(我将打开另一个问题)。

LinearGradientBrush

我的代码如下(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;
}

希望这有助于其他人:)

答案 1 :(得分:0)

    // GET: Admin/Colors
    public ActionResult Index()
    {
        var colors = db.Colors.OrderBy(a => a.HexCode);
        return View(colors);
    }

我在MVC.Net项目中使用过它。 我想你可以自己修改它。

HexCodes必须以&#39;#&#39;开头。 (对于订购很重要)