У меня есть следующий список из 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);
Но я не уверен, справедливо ли это для всех возможностей и нет ли более простого решения.