Получить шестнадцатеричные коды для всех цветов между двумя цветами? - PullRequest
2 голосов
/ 03 августа 2010

Я хочу, чтобы кнопки переключались с одного цвета на другой.

Например. 1000 кнопок, первая из которых желтая, а последняя - зеленая, а все промежуточное значение будет медленно переходить от желтого к зеленому.

Как я могу сгенерировать все шестнадцатеричные коды для цветов (например, # 8a3a3a) между этими двумя цветами?

Ответы [ 3 ]

2 голосов
/ 03 августа 2010

Разделите два входных цвета на красный, зеленый, синий компоненты и преобразуйте их в плавающие.Вычтите исходные компоненты из целевых компонентов, разделите каждый на 1000 и назовите их f.ex.deltaRed, deltaGreen, deltaBlue.Начните с исходных компонентов, преобразуйте их в строку «#rrggbb» 1000 раз, каждый цикл добавляет дельты.Если вы хотите на самом деле достичь цвета назначения, вы должны выполнить цикл от 0 до 1000, т.е.1001 раз.

2 голосов
/ 03 августа 2010

Да, это так.Вы можете вычислить его следующим образом:

Представьте, что цвета - это точки в трехмерном пространстве, где каждый компонент (красный, зеленый, синий) представляет одно измерение.В зависимости от того, сколько цветовых оттенков вы хотите получить между двумя цветами, вы можете попытаться равномерно разделить различия между двумя цветами для каждого компонента в отдельности.Например, если rA является красным компонентом цвета A, а rB красным компонентом цвета B, и если вы хотите сделать 10 шагов между ними, то красный компонент второго шага будет r2 = (rB - rA) * 2 /10.

Сначала преобразуйте компоненты в десятичную (например, 8a => 138), и вам, вероятно, следует написать небольшую программу для вычислений.Я не думаю, что вам нужно так много тонов, потому что у каждого компонента есть только диапазон от 0 до 255 (необходимо округление), и человеческий глаз в любом случае не может различить столько цветов.

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