;-- TIME_STAMP 2022-09-30 12:10:37 _TestBrightness(0xF5F5DC, 2) _TestBrightness(0x0000FF, 10) _TestBrightness(0xE9967A, 4) Func _TestBrightness($_RGB, $_step) Local $hGui = GUICreate('Test Brightness', 400, 200) Local $RGB2 = $_RGB, $aL1[6], $aL2[6], $y GUICtrlCreateLabel('AUFHELLEN', 10, 10) GUICtrlCreateLabel('ABDUNKELN', 200, 10) For $i = 0 To UBound($aL1) -1 $y = 30 + $i*21 $aL1[$i] = GUICtrlCreateLabel('', 10, $y, 180, 20) $aL2[$i] = GUICtrlCreateLabel('', 200, $y, 180, 20) Next GUICtrlSetBkColor($aL1[0], $_RGB) GUICtrlSetBkColor($aL2[0], $RGB2) For $i = 1 To UBound($aL1) -1 $_RGB = _GetColorWithBrightness($_RGB, $_step) GUICtrlSetBkColor($aL1[$i], $_RGB) $RGB2 = _GetColorWithBrightness($RGB2, (-1)*$_step) GUICtrlSetBkColor($aL2[$i], $RGB2) Next GUISetState() Do Until GUIGetMsg() = -3 GUIDelete($hGui) EndFunc ; #FUNCTION# ======================================================================================= ; Name ..........: _GetColorWithBrightness ; Description ...: Gibt zu einer Farbe die auf einen Helligkeitswert geänderte Farbe zurück ; Parameter(s)...: $_RGB ; ....[optional].: $_iStep Zur Änderung der Helligkeit um einzelne Schritte (+/-), (Default: 0) ; ...............: Nur wirksam, wenn "$_iBrightness=Null". ; ....[optional].: $_iBrightness Zur Änderung der Helligkeit auf einen fixen Wert (Default: Null) ; Return values .: Success Der neue Farbwert ; ...............: Failure Der Farbwert, wie übergeben ($_iStep/$_iBrightness nicht angegeben) ; Author ........: BugFix ; ================================================================================================== Func _GetColorWithBrightness($_RGB, $_iStep=0, $_iBrightness=Null) Local $R = BitAND(BitShift($_RGB, 16), 0xFF) Local $G = BitAND(BitShift($_RGB, 8), 0xFF) Local $B = BitAND($_RGB, 0xFF) Local $R1 = $R, $G1 = $G, $B1 = $B Local $Brightness = Int(Sqrt($R^2*0.299 + $G^2*0.587 + $B^2*0.114)) If $_iBrightness = Null Then ; Schrittweite wird verwendet $_iBrightness = $Brightness + ($_iStep) EndIf $_iBrightness = $_iBrightness < 0 ? 0 : ($_iBrightness > 255 ? 255 : $_iBrightness) If $_iBrightness > $Brightness Then While $Brightness < $_iBrightness $R1 = $R1 +1 > 255 ? 255 : $R1 +1 $G1 = $G1 +1 > 255 ? 255 : $G1 +1 $B1 = $B1 +1 > 255 ? 255 : $B1 +1 $Brightness = Int(Sqrt($R1^2*0.299 + $G1^2*0.587 + $B1^2*0.114)) WEnd ElseIf $_iBrightness < $Brightness Then While $Brightness > $_iBrightness $R1 = $R1 -1 < 0 ? 0 : $R1 -1 $G1 = $G1 -1 < 0 ? 0 : $G1 -1 $B1 = $B1 -1 < 0 ? 0 : $B1 -1 $Brightness = Int(Sqrt($R1^2*0.299 + $G1^2*0.587 + $B1^2*0.114)) WEnd EndIf Return '0x' & Hex($R1,2) & Hex($G1,2) & Hex($B1,2) EndFunc