我有以下 10 种颜色的列表:
public static readonly IList<Brush> lineColors = new ReadOnlyCollection<Brush>
(new List<Brush> {
new SolidColorBrush(Color.FromRgb(35, 31, 32)),
new SolidColorBrush(Color.FromRgb(64, 64, 66)),
new SolidColorBrush(Color.FromRgb(89, 89, 91)),
new SolidColorBrush(Color.FromRgb(110, 111, 113)),
new SolidColorBrush(Color.FromRgb(129, 130, 132)),
new SolidColorBrush(Color.FromRgb(148, 149, 153)),
new SolidColorBrush(Color.FromRgb(168, 169, 173)),
new SolidColorBrush(Color.FromRgb(189, 190, 193)),
new SolidColorBrush(Color.FromRgb(210, 211, 213)),
new SolidColorBrush(Color.FromRgb(231, 231, 232))
});
现在我也有一个从 1 到 n 的范围。我想将这些值平均映射到这 10 种颜色,以便最小值是第一种颜色,最大值映射到最后一种颜色。所有其他颜色应在值范围内覆盖相等的距离。
怎么做?
我想这也许可以做到:
int position = Math.floor( value / ((max - min) / lineColors.Count));
lineColors.ElementAt(position);
但我不确定这是否适用于所有可能性,以及是否没有更简单的解决方案。