Motivation

Bei der Arbeit mit Farben ist die Darstellung im RGB-Farbraum nicht immer die beste Wahl. Will man ein Bild einfärben, ohne Helligkeit und Kontrast zu verändern, also z.B. alle Blau-Anteile durch Rot zu ersetzen, ist der HSV-Farbraum besser geeignet. Leider bietet das .NET-Framework hier keine besonders gute Unterstützung. Die Klasse HSV hilft.

Download

Verwendung

Zur Erzeugung einer Instanz sind zwei Konstruktoren implementiert: einer, bei dem die H-, S- und V-Werte direkt angegeben werden können und einer, der eine HSV-Struktur aus einer Color-Struktur erstellt. Hinzu kommt die Methode FromRgb, die eine HSV-Instanz aus den angegebenen RGB-Werten erstellt.

Zwei Konvertierungsoperatoren erlauben die direkte Umwandlung einer Color-Struktur in eine HSV-Struktur und umgekehrt. Folgender Code ist damit möglich:

Dim a As New HSV(300, 1, 1)
Dim b As Color = a ' Wandelt HSV -> Color

Dim c As Color = Color.Red
Dim d As HSV = c ' Wandelt Color -> HSV

Test-Programm

Beim Testprogramm werden die Farbewerte eines Musterbildes verändert. Der Farbton kann "gedreht" ("Hue +"), Sättigung (Sat %) und Helligkeitswert (Val  %) können prozentual reduziert werden. Die den HSV-Werten entsprechenden RGB-Werte und eine Fläche in der spezifizierten Farbe werden darunter angezeigt.

Testprogramm MsgBoxExTest

In der Abbildung wird der Farbton um 120 gedreht. Das im Original vorherrschende Rot wird zu Grün. Schwarz, Weiß und der Helligkeitseindruck bleiben unverändert.