Hallo Leute,
für eine bestimmte Anwendung möchte ich gerne 100 verschiedene RGB-Farben auf einen Slider (0-100%) legen. (exemplarisch: siehe angehängten Bild)
Dieses soll jedoch nicht ganz „wild“ durcheinander sein, sondern möglichst eine „sinnvolle“ Reihenfolge ergeben.
(z.B. gelb, orange, grün, blau, lila…mit jeweiligen „Mischungen“/Farbverlauf)). Wenn ich den Slider also z.B. auf 10 stelle, habe ich immer den gleichen Farbwert, stelle ich ihn etwas höher wird die Farbe nur etwas heller oder wechselt mit jeden Schritt weiter zu der nächsten Farbe…
Kennt jemand ein Array oder der für meine Zwecke dienlich wäre? Oder ein Formel die dieses bewirken könnte?
Joachim
Servus
HSl heist das Zauberwort.
Damit kannst anstatt Rot-Gün-Blau, die Farbton-Sättigung-Helligkeit einstellen. d.h. du hast für jede dieser 3 Paramter eine Variable.
Ich denke in diesem Thread solltest du fündig werden:
Universeller HSL Slider mit Farbkalibration
Ansonsten allgemein nach HSL suchen, HSL->RGB Umwandlung kommt in vielen Threads vor.
gruß
bb
Hallo bb,
vielen Dank für Deine Antwort. Ich habe noch diesen Artikel gefunden und das darin befindlich Skript auf PHP bzw. IPS adaptiert:
§parts = 100;
for ($i = 1; $i <= §parts; $i++) {
GetRainbowColor($i/§parts);
IPS_Sleep(25);
}
Return;
function GetRainbowColor($Value)
{
//"Rot:" intval(CalcRainbowColor($Value))
//"Grün:" intval(CalcRainbowColor($Value + 2/3))
//"Blau:" intval(CalcRainbowColor($Value + 1/3))
I2GRGB_Set_RGB(43269 /*[Schlafzimmer\IPS2GPIO_RGB]*/, intval(CalcRainbowColor($Value)), intval(CalcRainbowColor($Value + 2/3)), intval(CalcRainbowColor($Value + 1/3)));
Return;
}
function CalcRainbowColor($Value)
{
$result = 255 * Cos(2 * Pi() * $Value) + 127;
$result = max(0, min($result, 255));
return $result;
}
…macht schöne „Regenbogenfarben“…
Die Funktion etwas angepasst, sind so ziemlich alle Farben dabei die man mit RGB so machen kann. Vielleicht kann es jemand gebrauchen.
Joachim