Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как получить более светлый или более тёмный цвет

Delphi , Графика и Игры , Цвета и Палитра



Автор: http://www.swissdelphicenter.ch

{
  Here's some function that returns the lighter or darker color of a TColor.
  You can use it, for example, to design a bevel or something like that.
 }

 {=======================================}

function Min(a, b: Longint): Longint;
begin
  if a > b then
    Result := b
  else
    Result := a;
end;

function Max(a, b: Longint): Longint;
begin
  if a > b then
    Result := a
  else
    Result := b;
end;

{=======================================}

function GetHighlightColor(BaseColor: TColor): TColor;
begin
  Result := RGB(Min(GetRValue(ColorToRGB(BaseColor)) + 64, 255),
    Min(GetGValue(ColorToRGB(BaseColor)) + 64, 255),
    Min(GetBValue(ColorToRGB(BaseColor)) + 64, 255));
end;

function GetShadowColor(BaseColor: TColor): TColor;
begin
  Result := RGB(Max(GetRValue(ColorToRGB(BaseColor)) - 64, 0),
    Max(GetGValue(ColorToRGB(BaseColor)) - 64, 0),
    Max(GetBValue(ColorToRGB(BaseColor)) - 64, 0));
end;

Вот перевод текста на русский язык:

Это фрагмент кода на Delphi, который предоставляет два функционала для получения светлых или темных версий заданного цвета. Функция GetHighlightColor возвращает более светлую версию, увеличивая значения красной, зеленой и синей (RGB) компонент цветов input-цвета на 64, а затем ограничивая их максимальным диапазоном 255. Функция GetShadowColor делает противоположное, уменьшая RGB-значения на 64 и ограничивая их минимальным диапазоном 0.

Вот подробный анализ работы каждой функции:

  1. GetHighlightColor:
    • ColorToRGB(BaseColor): Конвертирует входной цвет (BaseColor) в его представление RGB.
    • GetRValue, GetGValue, и GetBValue: Извлекает красные, зеленые и синие компоненты из значения RGB.
    • Min(GetValue + 64, 255): Увеличивает каждый компонент на 64, но ограничивает результат максимальным диапазоном 255. Это обеспечивает, что полученный цвет все еще находится в допустимом диапазоне.
  2. GetShadowColor:
    • Аналогично GetHighlightColor, но уменьшает RGB-значения на 64 вместо увеличения.

Чтобы использовать эти функции, просто вызовите их с параметром TColor, представляющим основной цвет, который вы хотите модифицировать. Например:

MyHighlightedColor := GetHighlightColor(MyBaseColor);
MyShadowedColor := GetShadowColor(MyBaseColor);

Обратите внимание, что эти функции довольно просты и не учитывают более сложные пространства цветов или модели цвета, такие как HSL (Hue, Saturation, Lightness) или CIELAB. Если вам нужно болееadvanced color manipulation, вы можете рассмотреть использование библиотеки обработки цветов или реализовать свои собственные алгоритмы.

Также помните, что этот код написан на Delphi, поэтому он будет работать только в среде Delphi. Если вы ищете эквивалентные функции в другом программном языке, вам нужно будет перевести их соответствующим образом.

Статья описывает функции на языке Delphi для получения более светлого или более тёмного цвета, используя которые можно создавать эффекты отливки и теней.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Цвета и Палитра ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 09:33:14/0.006119966506958/0