168, 0, 255
Wie erstelle ich bei einem RGB-Wert Farbtöne (heller machen) und Schattierungen (dunkler machen) der Farbe?
Unter verschiedenen Optionen zum Schattieren und Tönen:
Multiplizieren Sie für Farbtöne jede Komponente mit 1/4, 1/2, 3/4 usw. ihres vorherigen Werts. Je kleiner der Faktor, desto dunkler der Farbton.
Berechnen Sie für Farbtöne (255 - vorheriger Wert), multiplizieren Sie diesen mit 1/4, 1/2, 3/4 usw. (je größer der Faktor, desto heller der Farbton) und addieren Sie diesen zum vorherigen Wert (jeweils angenommen) .component ist eine 8-Bit-Ganzzahl.
Beachten Sie, dass Farbmanipulationen (wie Farbtöne und andere Schattierungen) in linearem RGB durchgeführt werden sollten . Es ist jedoch unwahrscheinlich, dass RGB-Farben, die in Dokumenten angegeben oder in Bildern und Videos codiert sind, in linearem RGB vorliegen. In diesem Fall muss eine sogenannte inverse Übertragungsfunktion auf jede der Komponenten der RGB-Farbe angewendet werden. Diese Funktion variiert mit dem RGB-Farbraum. Im sRGB-Farbraum (der angenommen werden kann, wenn der RGB-Farbraum unbekannt ist) entspricht diese Funktion beispielsweise in etwa der Erhöhung jeder sRGB-Farbkomponente (von 0 bis 1) auf eine Potenz von 2,2. (Beachten Sie, dass "lineares RGB" kein RGB-Farbraum ist.)
Siehe auch den Kommentar von Violet Giraffe zur "Gammakorrektur".
rs = r * 0.25
,gs = g * 0.25
,bs = b * 0.25
(das ist eine ziemlich dunkle Schatten); Tint (RT, GT, bt):rt = r + (0.25 * (255 - r))
,gt = g + (0.25 * (255 - g))
,bt = b + (0.25 * (255 - b))
(das ist eine ziemlich leichte Tönung). Ich habe es als Teil eines coolen Arrays gemacht, das viele Farbtöne erzeugt hat und es hat großartig funktioniert. Hoffentlich hilft das. Danke Peter.Einige Definitionen
Erstellen eines Farbtons oder eines Farbtons
Abhängig von Ihrem Farbmodell gibt es verschiedene Methoden, um eine dunklere (schattierte) oder hellere (getönte) Farbe zu erstellen:
RGB
::Schattieren:
Zum Abtönen:
Allgemeiner ist die Farbe, die zum Überlagern einer Farbe
RGB(currentR,currentG,currentB)
mit einer FarbeRGBA(aR,aG,aB,alpha)
führt ,:wo
(aR,aG,aB) = black = (0,0,0)
zum Schattieren und(aR,aG,aB) = white = (255,255,255)
zum AbtönenHSV
oderHSB
:Value
/Brightness
oder erhöhen Sie dasSaturation
Saturation
oder erhöhen Sie dasValue
/Brightness
HSL
::Lightness
Lightness
Es gibt Formeln zum Konvertieren von einem Farbmodell in ein anderes. Gemäß Ihrer ersten Frage können Sie, wenn Sie sich in befinden
RGB
und dasHSV
Modell beispielsweise zum Schattieren verwenden möchten, einfach in konvertierenHSV
, die Schattierung durchführen und zurück in konvertierenRGB
. Zu konvertierende Formeln sind nicht trivial, können aber im Internet gefunden werden. Abhängig von Ihrer Sprache ist es möglicherweise auch als Kernfunktion verfügbar:Modelle vergleichen
RGB
hat den Vorteil, dass es wirklich einfach zu implementieren ist, aber:HSV
oderHSB
ist etwas komplex, weil Sie mit zwei Parametern spielen müssen, um das zu bekommen, was Sie wollen (Saturation
&Value
/Brightness
)HSL
ist aus meiner Sicht das Beste:50%
bedeutet einen unveränderten Farbton>50%
bedeutet, dass der Farbton heller ist (Farbton)<50%
bedeutet, dass der Farbton dunkler ist (Schatten)Lightness
Teil austauschen ).quelle
Ich experimentiere gerade mit Leinwand und Pixeln ... Ich finde, dass diese Logik für mich besser funktioniert.
add, um den 'Farbton'-Wert auszugleichen
oder etwas ähnliches...
quelle