Получение цветового градиента между двумя цветами с переменным номером - PullRequest
0 голосов
/ 24 января 2019

У меня есть список объектов со свойством Color. Список может содержать любое количество элементов в диапазоне от 10 до 4000. Я хочу, чтобы свойство Color первого элемента было зеленым, а последний - красным. И все промежуточные элементы должны получать цвета между красным и зеленым (градиент) в зависимости от их положения (сначала зеленый и позднее красный. Следующий код работает только в том случае, если число списков меньше 255. Он возвращает весь белый цвет если размер списка превышает 255

           Color start = Colors.White;
            Color end = Colors.Green;
            int steps = lstTag.Count;
            int stepA = ((end.A - start.A) / (steps - 1));
            int stepR = ((end.R - start.R) / (steps - 1));
            int stepG = ((end.G - start.G) / (steps - 1));
            int stepB = ((end.B - start.B) / (steps - 1));

            int i = 0;
            foreach (ArgsData data in lstTag)
            {
                var a = byte.Parse((start.A + (stepA * i)).ToString());
                var r = byte.Parse((start.R + (stepR * i)).ToString());
                var g = byte.Parse((start.G + (stepG * i)).ToString());
                var b = byte.Parse((start.B + (stepB * i)).ToString());
                data.ColorCode = new SolidColorBrush(Color.FromArgb(a, r, g, b));

                i++;
            }

Любая помощь будет высоко оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...