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

Получить оттенок серого из RGB-цвета

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

Получить оттенок серого из RGB-цвета

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  The following function helps you to convert a RGB Color to Grayscale. 
  It works after the american NTSC (National Televisision Standards Committee) 
  system. 
}

 { 
  Mit Hilfe des folgenden Codes lasst sich die Graustufe einer 
  beliebigen RGB Farbe herausfinden. Das System arbeitet nach dem 
  vom amerikanischem NTSC (National Televisision Standards Committee) 
  vorgelschlagenem System. 
  Es kann unteranderem dazu verwendet werden ein Bild in Graustufen 
  darzustellen. (siehe dazu Tipp http://www.swissdelphicenter.ch/de/showcode.php?id=437) 
}


 function GetGreyScale(red, blue, green: TColor): TColor;
 var
    Color: Integer;
 begin
   Color := Round(red * 0.56 + green * 0.33 + blue * 0.11);
   Result := RGB(Color, Color, Color);
 end;

Функция Delphi, именуемая GetGreyScale, принимает три параметра: red, blue и green, каждый из которых имеет тип TColor и представляет собой значение RGB цвета. Функция возвращает grayscale цвет, представленный как значение RGB.

Формула для преобразования RGB-цвета в grayscale основана на американском стандарте NTSC (National Television Standards Committee), который весит компонент красного цвета 0,56, зеленый компонент 0,33 и синий компонент 0,11. Это означает, что функция придает большее значение зеленому компоненту и меньшее - красному и синему.

Рассмотрим код:

  1. Функция GetGreyScale принимает три параметра: red, blue и green, каждый из которых имеет тип TColor.
  2. Функция объявляет целочисленную переменную Color, которая будет хранить рассчитанное значение grayscale.
  3. Формула для расчета значения grayscale применяется к компонентам RGB:
    • Компонент красного цвета умножается на 0,56 (что приблизительно эквивалентно 57%).
    • Компонент зеленого цвета умножается на 0,33 (что приблизительно эквивалентно 33%).
    • Компонент синего цвета умножается на 0,11 (что приблизительно эквивалентно 11%). Три значения добавляются вместе, а результат округляется с помощью функции Round.
  4. Рассчитанное значение grayscale хранится в переменной Color.
  5. Функция возвращает RGB-цвет с одинаковой интенсивностью для всех трех компонентов (red, blue и green) путем установки каждого компонента в значение Color. Это создает grayscale цвет.

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

var
  myColor: TColor;
begin
  myColor := GetGreyScale($FF0000, $0000FF, $00FFFF); // Преобразовать RGB(255, 0, 255) в grayscale
  // Сделать что-то с полученным grayscale цветом
end.

В этом примере код преобразует RGB-цвет #FF0000 (красный) в grayscale и хранит результат в переменной myColor.

Функция GetGreyScale позволяет конвертировать любую RGB-цвету в оттенок серого по системе американского Национального комитета по телевизионным стандартам (NTSC).


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

Получайте свежие новости и обновления по 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 16:58:01/0.0032210350036621/0