Einzelnen Beitrag anzeigen

Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#1

RGB to HSV || Sättigung / Helligkeit / Farbton bestimmen

  Alt 27. Apr 2004, 18:00
Wer die Helligkeit / Sättigung / den Farbton eines RGB-Farbwertes berechnen möchte dem sei folgender Code aus diesem Thread ans Herz gelegt:
Delphi-Quellcode:
procedure TForm1.RGBtoHSV(Red, Green, Blue: Byte; var Hue: THue; var Saturation, Value: Byte);
var
  Maximum, Minimum: Byte;
  Rc, Gc, Bc: Single;
  H: Single;
begin
  Maximum := Max(Red, Max(Green, Blue));
  Minimum := Min(Red, Min(Green, Blue));
  Value := Maximum;
  if Maximum <> 0 then
    Saturation := MulDiv(Maximum - Minimum, 255, Maximum)
  else
    Saturation := 0;
  if Saturation = 0 then
    Hue := 0 // arbitrary value
  else
  begin
    Assert(Maximum <> Minimum);
    Rc := (Maximum - Red) / (Maximum - Minimum);
    Gc := (Maximum - Green) / (Maximum - Minimum);
    Bc := (Maximum - Blue) / (Maximum - Minimum);
    if Red = Maximum then
      H := Bc - Gc
    else if Green = Maximum then
      H := 2 + Rc - Bc
    else
    begin
      Assert(Blue = Maximum);
      H := 4 + Gc - Rc;
    end;
    H := H * 60;
    if H < 0 then
      H := H + 360;
    Hue := Round(H);
  end;
end;
Klick! DanielJ

Berechnung der Helligkeit:
Delphi-Quellcode:
Maximum := Max(Red, Max(Green, Blue));
// any other code here... ;-)
Brightness := Maximum;
Berechnung der Sättigung:
Saturation := MulDiv(Maximum - Minimum, 255, Maximum) Zitat von dieser Seite:
Zitat:
|---------------------------|
| HSB |
| Hue Saturation Brightness |
| HSV |
|---------------------------|

Ein Farbmodell, das aus folgenden 3 Koordinaten besteht, die einen Farbkegel bilden:

- Farbton (Hue)
- Sättigung (Saturation)
- Helligkeit (Brightness, Value)

Der Farbton wird als Winkel auf einen Farbkreis angegeben.
Rot = 0 °
Gelb = 60 °
Grün = 120 °
Cyan = 180 °
Blau = 240 °
Magenta = 300 °

Sättigung wird in Prozent angegeben.
0% = keine Farbe (weis bzw. grau)
100% = satte Farbe

Helligkeit wird in Prozent angegeben
0% = dunkel (volle Schwarzbeimischung)100% = hell (keine Schwarzbeimischung)
HTH!

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat