[从图像列表中,我使用方法similar to this计算了平均颜色。我现在有一个System.Drawing.Color
的列表,但是我不确定如何以看起来像彩虹的方式对它们进行排序。
这里是我尝试过的一些简单方法(出于示例目的,略有更改):
var colorList = new List<Color>
{
Color.Red,
Color.Purple,
Color.Black,
Color.Blue,
Color.Green,
Color.LightGreen,
Color.LightSkyBlue,
Color.Yellow
};
var orderedColorList =
colorList.OrderBy(o => (o.R * 3 + o.G * 2 + o.B * 1));
这似乎不会产生彩虹,但更多的是从黑色到白色的效果。
我如何能够以产生彩虹的方式对它们进行排序?
如果先按Hue
排序,然后按RGB
排序,则应获得彩虹排序:
var orderedColorList = colorList
.OrderBy(color => color.GetHue())
.ThenBy(o => o.R * 3 + o.G * 2 + o.B * 1);