У меня есть следующий список из 10 цветов:Отображать неограниченный диапазон значений до 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 до п. Я хотел бы сопоставить эти значения в равной степени с этими 10 цветами, так что наименьшее значение будет первым цветом, а максимальное значение будет сопоставлено с последним цветом. Все остальные цвета должны охватывать равное расстояние в диапазоне значений.
Как это сделать?
Я думаю, что это будет возможно сделать это:
int position = Math.floor(value/((max - min)/lineColors.Count));
lineColors.ElementAt(position);
Но я не уверен, если это верно для всех возможностей, и если не существует более простое решение.
Не можете ли вы использовать индекс-1? извините, я, наверное, не совсем понимаю. –
да для доступа к списку, но мне нужно рассчитать индекс. –
Если вы имеете в виду реализацию градиента, вы можете посмотреть здесь: http://stackoverflow.com/questions/986352/how-to-do-that-gradient-color-generator –