Контрастный цвет в ...
 
Уведомления
Очистить все

Контрастный цвет в Delphi

2 Записи
1 Пользователи
0 Likes
542 Просмотры
83-150 Okolokompa Форум
(@telman)
Estimable Member
Присоединился: 4 года назад
Записи: 78
Создатель темы  

Я пишу приложение, в котором мне нужно задать цвета кнопок (загруженные из другой - не моей - базы данных). В этом внешнем приложении пользователь выбирает цвет кнопки из палитры Windows, и цвет надписи устанавливается автоматически, чтобы он был хорошо виден, из того, что я наблюдал, для «светлых» кнопок это черный, для «темного» белого. Эти данные не сохраняются в базе данных.

А теперь вопрос - как распознать, является ли цвет светлым или темным? В базе данных цвета сохраняются как десятичные - они сразу совпадают как TColor, например, белый: 16777215, красный: 255, оранжевый: 33023 и т. Д.


   
Цитата
83-150 Okolokompa Форум
(@telman)
Estimable Member
Присоединился: 4 года назад
Записи: 78
Создатель темы  

Справился сам.

Я нашел очень простую функцию, которая устанавливает свет на черный для ярких цветов:

function InvertColor(const Color: TColor): TColor;
begin
  if (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) > 384 then
    result := clBlack
  else
    result := clWhite;
end;

   
ОтветитьЦитата
Поделиться: