Уведомления
Очистить все
Delphi
2
Записи
1
Пользователи
0
Likes
542
Просмотры
Создатель темы 08/03/2020 6:21 дп
Я пишу приложение, в котором мне нужно задать цвета кнопок (загруженные из другой - не моей - базы данных). В этом внешнем приложении пользователь выбирает цвет кнопки из палитры Windows, и цвет надписи устанавливается автоматически, чтобы он был хорошо виден, из того, что я наблюдал, для «светлых» кнопок это черный, для «темного» белого. Эти данные не сохраняются в базе данных.
А теперь вопрос - как распознать, является ли цвет светлым или темным? В базе данных цвета сохраняются как десятичные - они сразу совпадают как TColor, например, белый: 16777215, красный: 255, оранжевый: 33023 и т. Д.
Создатель темы 08/03/2020 6:22 дп
Справился сам.
Я нашел очень простую функцию, которая устанавливает свет на черный для ярких цветов:
function InvertColor(const Color: TColor): TColor;
begin
if (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) > 384 then
result := clBlack
else
result := clWhite;
end;