Delphi World - Як зробити стандартні кольори в Delphi світлішим або темнішим

У цій статті хотілося б показати принцип отримання зі звичайного кольору темніший або світліший. А також розглянемо, як цей принцип реалізований у програмному коді.

Отже, трохи теорії

Кожен із трьох основних кольорів (Червоний, Зелений, Синій) можуть мати значення від 0 до 255, відповідно скомбінувавши їх ми можемо отримати 16,777,216 можливих кольорів. Візуально це можна уявити як три осі куба, в якому напрямки x, y та z відповідають за кольори червоний, зелений та синій. У поєднанні ці напрямки дають крапку в кубі, що становить один колір із 16 мільйонів. Точка куба, в якій значення дорівнює 0 (0,0,0), відповідає чорному кольору, значення (255,255,255) - білого кольору, (255,0,0) - чисто червоного, і т.д.

Якщо візуально провести лінію між будь-яким кольором (r, g, b) та білим кольором (255, 255, 255), то вийде, що на цій лінії будуть лежати всі значення даного кольору (r, g, b). Якщо ми рухатимемося по лінії у бік білого кольору, то яскравість збільшуватиметься до тих пір, поки не отримаємо чисто білий колір.

Те саме можна зробити і для зменшення яскравості кольору. Достатньо провести лінію із кольору (r,g,b) у чорний (0,0,0). Тобто при русі по лінії до чорного кольору ми зменшуватимемо яскравість до тих пір, поки не отримаємо чорний колір.

Функція "Darker" повертає нове значення кольору, яке буде на кілька відсотків темнішим. Природно, що за 100% ми отримаємо чорний колір. Функція "Lighter" повертає колір, який світліший на скільки відсотків вихідного. 100% – білий колір.

Функції Darker та Lighter вимагають 2 параметри і використовуються приблизно так:

Вийде панель кольорів, яка на 20% темніша за звичайний синій колір.

Тепер давайте подивимося, як виглядають усередині нашіфункції:

Також я додав деякі функції, у яких вже додано стандартні значення відсотків. Це для тих, кому ніколи замислюватися над відсотками :)