Как я могу генерировать несколько оттенков из заданного базового цвета?

Я хотел бы спроектировать диаграмму и установить цвета из одного экземпляра. Так же, как в Excel:

alt text

Есть ли какая-то формула или алгоритм для генерировать следующий оттенок цвета из заданного оттенок или цвет?

Ответы

Ответ 1

Мне кажется, что они просто приобрели тот же оттенок (базовый цвет) и изменили яркость вверх и вниз. Это можно сделать достаточно легко с преобразованием HSL или HSV. Проверьте Википедию для цветовых пространств HSL и HSV, чтобы получить некоторое представление о вовлеченной теории.

Основная идея: компьютеры представляют цвет со смесью красной интенсивности, интенсивности зеленого цвета и синей интенсивности, называемой RGB, потому что на экране отображается цвет. HSL (оттенок, насыщенность, легкость) и HSV (оттенок, насыщенность, значение) являются двумя альтернативными моделями для представления цвета, которые более интуитивно понятны и ближе к тому, как люди склонны думать о том, как выглядят цвета.

Оттенок - это основной цвет, представленный (более или менее) как угол на цветовом круге. Насыщенность - это линейное значение, от 0 (серый) до 255 (яркий, яркий цвет). И Lightness/Value представляют яркость от 0 (черный) до 100 (белый).

Алгоритмы преобразования из RGB → HSL и HSL → RGB (или HSV вместо HSL) довольно просты. Попробуйте преобразовать свой цвет в HS *, отрегулировать яркость и преобразовать обратно. Принимая несколько разных значений яркости от низкого до высокого и размещая их как клины в круговой диаграмме, вы можете легко дублировать эту фотографию.

Ответ 2

Посмотрите цветовое пространство HSV. Используя его, вы можете создавать различные оттенки или оттенки, начиная с заданного цвета. Существует страница с кодом Pascal/Delphi для преобразования между RGB и HSV в efg Computer Lab.

Ответ 3

Родерик, ссылки @mghie отлично подходят для начала, дополнительно попробуйте Colorlib Библиотека Delphi, которая позволяет конвертировать между цветовыми моделями как а также утилиты преобразования цвета HTML. очень полный, полный исходный код включен и бесплатное;).

проверьте демонстрацию приложение, на этом изображении вы можете увидеть синий палитру, сгенерированную с использованием этой библиотеки.

alt text