Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как извлечь Red, Green, Blue составляющие из определённого цвета

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

Как извлечь Red, Green, Blue составляющие из определённого цвета

Используйте функции Window API GetRValue(), GetGValue() и GetBValue():


procedure TForm1.Button1Click(Sender: TObject);
begin
  with Form1.Canvas.Pen do
  begin
    Color := clRed;
    with Memo1.Lines do
    begin
      Add('Red  := ' + IntToStr(GetRValue(Color)));
      Add('Red  := ' + IntToStr(GetGValue(Color)));
      Add('Blue := ' + IntToStr(GetBValue(Color)));
    end;
  end;
end;

Here's a translation of the text into Russian:

Код, который я предоставил, написан на Delphi и использует Windows API для получения красных, зеленых и синих (RGB) компонентов цвета. Функции GetRValue, GetGValue и GetBValue используются для извлечения соответствующих значений.

Вот разбивка того, что делает каждая строка:

  1. with Form1.Canvas.Pen do: Этот блок используется для настройки свойств пера (краски), который используется для рисования на канвасе.
  2. Color := clRed;: Устанавливает цвет пера в красный.
  3. with Memo1.Lines do begin ... end;: Этот блок используется для добавления строк текста в мемо-управление (текстовый ящик с несколькими строками).

Интересная часть:

  1. Add('Красный := ' + IntToStr(GetRValue(Color)));: Добавляет строку в мемо-управление с текстом "Красный := " и значением красного компонента цвета.
  2. Add('Зеленый := ' + IntToStr(GetGValue(Color)));: Добавляет строку в мемо-управление с текстом "Зеленый := " и значением зеленого компонента цвета.
  3. Add('Синий := ' + IntToStr(GetBValue(Color)));: Добавляет строку в мемо-управление с текстом "Синий := " и значением синего компонента цвета.

Значения RGB лежат в диапазоне от 0 (минимальная интенсивность) до 255 (максимальная интенсивность). В этом случае, поскольку цвет установлен в красный (который соответствует максимальной интенсивности в канале красного), зеленые и синие компоненты будут равны 0.

Если вы хотите получить RGB-компоненты для другого цвета, просто измените значение Color на желаемое константное значение цвета (например, clGreen, clBlue и т.д.).

Альтернативным решением может быть использование функции TColorToRGB из модуля Graphics Delphi для преобразования константы цвета в ее RGB-представление. Вот пример:

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Form1.Canvas.Pen do
  begin
    Color := clRed;
    with Memo1.Lines do
    begin
      Add('Красный   :=  ' + IntToStr(ColorToRGB(clRed).r));
      Add('Зеленый   :=  ' + IntToStr(ColorToRGB(clRed).g));
      Add('Синий   :=  ' + IntToStr(ColorToRGB(clRed).b));
    end;
  end;
end;

В этом примере ColorToRGB используется для преобразования константы цвета clRed в ее RGB-представление, которое затем доступно через свойства .r, .g и .b.

Методы Window API GetRValue(), GetGValue() и GetBValue() позволяют извлечь составляющие цвета Red, Green, Blue для определенного цвета.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 12:19:40/0.0062539577484131/0