1. About.com
  2. Computing & Technology
  3. Delphi

Discuss in my forum

How to Convert RGB Color to HSB (HSV) Color

By , About.com Guide

The HSV (Hue, Saturation, Value) model, also called HSB (Hue, Saturation, Brightness), defines a color space commonly used in graphics applications. Hue value ranges from 0 to 360, Saturation and Brightness values range from 0 to 100%.

The RGB (Red, Green, Blue) is also used, primarily in web design. When written, RGB values are commonly specified using three integers between 0 and 255, each representing red, green, and blue intensities.

Here's a function to convert a RGB color to a HSV color.

 uses Math;
 
 type
    TRGBColor = record
      Red,
      Green,
      Blue : Byte;
    end;
 
    THSBColor = record
      Hue,
      Saturnation,
      Brightness : Double;
    end;
 
 function RGBToHSB(rgb : TRGBColor) : THSBColor;
 var
    minRGB, maxRGB, delta : Double;
    h , s , b : Double ;
 begin
    H := 0.0 ;
    minRGB := Min(Min(rgb.Red, rgb.Green), rgb.Blue) ;
    maxRGB := Max(Max(rgb.Red, rgb.Green), rgb.Blue) ;
    delta := ( maxRGB - minRGB ) ;
    b := maxRGB ;
    if (maxRGB <> 0.0) then s := 255.0 * Delta / maxRGB
    else s := 0.0;
    if (s <> 0.0) then
    begin
      if rgb.Red = maxRGB then h := (rgb.Green - rgb.Blue) / Delta
      else
        if rgb.Green = maxRGB then h := 2.0 + (rgb.Blue - rgb.Red) / Delta
        else
          if rgb.Blue = maxRGB then h := 4.0 + (rgb.Red - rgb.Green) / Delta
    end
    else h := -1.0;
    h := h * 60 ;
    if h < 0.0 then h := h + 360.0;
    with result do
    begin
      Hue := h;
      Saturnation := s * 100 / 255;
      Brightness := b * 100 / 255;
    end;
 end; 

Delphi tips navigator:
» MORE TIPS
« How to Move ListBox Items with the Mouse (Drag and Drop)

©2012 About.com. All rights reserved. 

A part of The New York Times Company.