Hex Farbwerte nach RGB umrechnen

  • Hallo. Es gibt ja in AutoIt die schöne Funktion _ColorGetRGB mit der man einen HEX-Farbwert in einen RGB-Farbwert umrechnen kann. Nun brauche ich aber auch das genaue Gegenteil, nämlich dass ich aus drei RGB-Farbwerten einen HEX-Farbwert erstellen kann. Irgendwie gibt die Funktion die von HEX nach RGB umrechnente keinen Aufschluss darüber, wie ich das ganz in die andere Richtung rechnen kann. Irgendwelche Tipps?

    [autoit]

    Func _ColorGetRGB($nColor, $iCurExt = @extended)
    If BitAND($nColor, 0xFF000000) Then Return SetError(1, 0, 0) ; invalid color value
    Local $aColor[3]
    $aColor[0] = BitAND(BitShift($nColor, 16), 0xFF)
    $aColor[1] = BitAND(BitShift($nColor, 8), 0xFF)
    $aColor[2] = BitAND($nColor, 0xFF)
    Return SetExtended($iCurExt, $aColor)
    EndFunc ;==>_ColorGetRGB

    [/autoit]

    Edit: Okay, kurz nach dem absenden ist es mir auch eingefallen nach was man googlen sollte: http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
    Hier wird das Rechenshema gut beschrieben. Bevor ich mich aber jetzt etwas entsprechend zusammenschustere, kann AutoIt das nativ umrechnen?

    Einmal editiert, zuletzt von Scritch (8. Januar 2015 um 19:36)

  • [autoit]

    Func RGBToHex($iRed, $iGreen, $iBlue)
    If Not BitAND(IsInt($iRed), IsInt($iGreen), IsInt($iBlue)) Then Return SetError(1, 0, -1)
    If BitOR($iRed < 0, $iGreen < 0, $iBlue < 0, $iRed > 0xff, $iGreen > 0xff, $iBlue > 0xff) Then Return SetError(2, 0, -1)
    Return '0x' & Hex($iRed, 2) & Hex($iGreen, 2) & Hex($iBlue, 2)
    EndFunc

    [/autoit]

    €dit: Achja, alternativ ginge auch noch die Funktion _ColorSetRGB()...

    Einmal editiert, zuletzt von Yjuq (27. Dezember 2014 um 01:11)

  • Um ein paar Bytes einzusparen xD
    Hatte kein Bock auf diese "xyz or xyz or xyz or xyz or ..." Geschichte :x
    Kann sich ja jeder umschreiben wie er/sie lustig ist ^^