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

Получить осветлённый цвет

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

Получить осветлённый цвет

Автор: ___Nikolay
WEB-сайт: http://delphiworld.narod.ru

// Получить осветлённый цвет
function TfmDW6Main.GetLightColor(const Color: TColor; const Light: Byte) : TColor;
type
  TRGB = packed record
    R, G, B: Byte;
  end;
var
  fFrom: TRGB;

  function GetRGB(const Color: TColor): TRGB;
  var
    iColor: TColor;
  begin
    iColor := ColorToRGB(Color);
    Result.R := GetRValue(iColor);
    Result.G := GetGValue(iColor);
    Result.B := GetBValue(iColor);
  end;

begin
  FFrom := GetRGB(Color);

  Result := RGB(
    Round(FFrom.R + (255 - FFrom.R) * (Light / 100)),
    Round(FFrom.G + (255 - FFrom.G) * (Light / 100)),
    Round(FFrom.B + (255 - FFrom.B) * (Light / 100))
  );
end;

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

Функция Delphi, называемая GetLightColor, принимает в себя цвет и значение светимости как входные параметры, и возвращает соответствующий светлый цвет.

Вот разбивка кода:

  1. Функция определена в классе TfmDW6Main, что указывает на то, что она является частью более крупной приложения.
  2. Функция принимает два параметра: Color - тип TColor, представляющий цвет, и Light - байтовое значение, представляющее светимость (в процентах).
  3. Функция использует вложенный рекордный тип TRGB для представления цветов в формате RGB. Каждый байтевой поле (R, G и B) соответствует красному, зелёному и синему компонентам цвета.
  4. Функция GetRGB определена внутри GetLightColor. Она принимает TColor как входной параметр и возвращает рекорд TRGB, представляющий RGB-значения этого цвета. Функция использует функцию ColorToRGB для преобразования входного цвета в RGB, а затем извлекает индивидуальные компонентные значения с помощью функций GetRValue, GetGValue и GetBValue.
  5. Внутри GetLightColor функция рассчитывает светлый цвет, добавляя пропорцию максимального возможного значения (255) к каждому компоненту оригинального цвета на основе предоставленного значения светимости. Рассчёт выполняется с помощью простой арифметики: (255 - FFrom.R) * (Light / 100) например.
  6. Наконец, переменная Result устанавливается в рассчитанный светлый цвет, который возвращается функцией.

Альтернативное реализация, использующая встроенные функции для манипуляции цветами Delphi:

function TfmDW6Main.GetLightColor(const Color: TColor; const Light: Byte): TColor;
begin
  Result := ColorBlend(Color, clWhite, (Light / 100));
end;

В этой версии функция ColorBlend используется для смешивания входного цвета с белым, что результатывает в светлом цвете. Пропорция светимости рассчитывается как (Light / 100).

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

В статье описывается функция GetLightColor, которая позволяет изменить цвет на осветлённый с помощью параметра Light, умножая красную, зелёную и синюю компоненты цвета на соответствующие коэффициенты.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 14:24:00/0.0055611133575439/1