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

Работа с цветами

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



Автор: Gero
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
Нeсколько полезных функций для работы с цветами.

// Получить цвет, темнее исходного на Percent процентов
function DarkerColor(const Color : TColor; Percent : Integer) : TColor;
// Получить цвет, светлее исходного на Percent процентов
function LighterColor(const Color : TColor; Percent : Integer) : TColor;
// Смешать несколько цветов и получить средний
function MixColors(const Colors : array of TColor) : TColor;
// Сделать цвет черно-белым
function GrayColor(Color : TColor) : TColor;

Зависимости: Windows, Graphics
Автор:       Gero, tov.vaskin@inbox.ru, Днепропетровск(Украина)
Copyright:   Gero
Дата:        11 февраля 2004 г.
***************************************************** }

function DarkerColor(const Color: TColor; Percent: Integer): TColor;
var
  R, G, B: Byte;
begin
  Result := Color;
  if Percent <= 0 then
    Exit;
  if Percent > 100 then
    Percent := 100;
  Result := ColorToRGB(Color);
  R := GetRValue(Result);
  G := GetGValue(Result);
  B := GetBValue(Result);
  R := R - R * Percent div 100;
  G := G - G * Percent div 100;
  B := B - B * Percent div 100;
  Result := RGB(R, G, B);
end;

function LighterColor(const Color: TColor; Percent: Integer): TColor;
var
  R, G, B: Byte;
begin
  Result := Color;
  if Percent <= 0 then
    Exit;
  if Percent > 100 then
    Percent := 100;
  Result := ColorToRGB(Result);
  R := GetRValue(Result);
  G := GetGValue(Result);
  B := GetBValue(Result);
  R := R + (255 - R) * Percent div 100;
  G := G + (255 - G) * Percent div 100;
  B := B + (255 - B) * Percent div 100;
  Result := RGB(R, G, B);
end;

function MixColors(const Colors: array of TColor): TColor;
var
  R, G, B: Integer;
  i: Integer;
  L: Integer;
begin
  R := 0;
  G := 0;
  B := 0;
  for i := Low(Colors) to High(Colors) do
  begin
    Result := ColorToRGB(Colors[i]);
    R := R + GetRValue(Result);
    G := G + GetGValue(Result);
    B := B + GetBValue(Result);
  end;
  L := Length(Colors);
  Result := RGB(R div L, G div L, B div L);
end;

function GrayColor(Color: TColor): TColor;
var
  Gray: Byte;
begin
  Result := ColorToRGB(Color);
  Gray := (GetRValue(Result) + GetGValue(Result) + GetBValue(Result)) div 3;
  Result := RGB(Gray, Gray, Gray);
end;

Пример использования:

var
  i, j: Integer;
begin
  ...
  with Bitmap1 do
    for i := 0 to Width - 1 do
      for j := 0 to Height - 1 do
        Canvas.Pixels[i, j] := GrayColor(Canvas.Pixels[i, j]);
  ...
end;

Это код-snippet на языке Delphi, который предназначен для работы с цветами в Windows Graphics окружении. Автором этого кода является Gero, и он был опубликован на сайте delphibase.endimus.com.

Код включает в себя четыре функции:

  1. DarkerColor: Функция принимает цвет и процент как входные параметры и возвращает темнее версию оригинального цвета. Она делает это, вычитая дробь от каждого компонента RGB-цвета.
  2. LighterColor: Функция принимает цвет и процент как входные параметры и возвращает светлее версию оригинального цвета. Она делает это, добавляя дробь от разницы между 255 (максимальным возможным значением для каждого компонента) и RGB-цвета.
  3. MixColors: Функция принимает массив цветов как входной параметр и возвращает смешанный цвет, который является средним из всех цветов в массиве.
  4. GrayColor: Функция принимает цвет как входной параметр и возвращает серый вариант этого цвета, вычисляя среднее значение красного, зеленого и синего компонентов.

Код также включает пример использования этих функций. В этом примере пиксели битовки конвертируются в серый с помощью функции GrayColor.

Вот подробное описание каждой функции:

  • DarkerColor: Функция принимает два параметра: Color, который является оригинальным цветом, и Percent, который является процентом темнения цвета. Функция проверяет, меньше ли Percent или равно 0, в котором случае она возвращает оригинальный цвет. Затем она конвертирует цвет в формат RGB с помощью функции ColorToRGB. Затем она вычитает дробь от каждого компонента из себя (на основе процента) и возвращает полученный цвет.
  • LighterColor: Функция аналогична DarkerColor, но добавляет дробь от разницы между 255 и каждым компонентом вместо вычитания.
  • MixColors: Функция принимает массив цветов как входной параметр и возвращает средний из всех цветов. Она делает это, суммируя каждый компонент по всем цветам, дели на длину массива, и затем возвращая полученный цвет в формате RGB.
  • GrayColor: Функция конвертирует цвет в серый, вычисляя среднее значение красного, зеленого и синего компонентов. Она делает это, конвертируя цвет в формат RGB с помощью функции ColorToRGB, вычисляя среднее значение каждого компонента, и затем возвращая полученный цвет.

В целом, эти функции предоставляют полезные инструменты для работы с цветами в приложениях 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-07-02 03:40:01/0.0033881664276123/0