- Joined
- Jul 11, 2020
- Messages
- 0
- Reaction score
- 25
- Points
- 0
Hay ich brauche für meine Clickgui ColorUtils nur ka wie ich die Funktion RgbToHex mache also wollte ich fragen ob jemand hier ne colorutils hat^^
(Soll kein merged Post sein!)
Ich erkläre jetzt noch, wie man vom "Farbcode" wieder zu den ursprünglichen Werten kommt:
Als Beispiel nehme ich 'int32 color = 0xFF38C467'.
Es ist umgekehrt, wer hätte es erwartet.
Also könnte man sich denken: 'red = color >> 16'
So leicht ist es aber nicht.
color >> 16 = 0xFF38C467 >> 16 = 0xFFFFFF38
Das ist natürlich schlecht, dies aber funktioniert, warum, wurde in der obrigen Erklärung beschrieben:
(color >> 16) & 0xFF = (0xFF38C467 >> 16) & 0xFF = 0x38
Um wie viele bits man 'color' verschieben muss, um Alpha, Red, Green oder Blue zu bekommen, sollte jetzt wohl klar sein.
Ich denke ich habe da ziemlich viel geschrieben, aber hoffentlich haben diejenigen, die den Post gelesen haben und davor nicht wussten wie dies funktioniert, es verstanden.
Wollte damit zeigen, dass es ein 32 Bit Integer ist.int32
rly? xd
Wenn du schon skiddest dann skidde dir die colorutils mit, du brauchst sowas nicht wenn du weißt wie man ein clickgui macht.Hay ich brauche für meine Clickgui ColorUtils nur ka wie ich die Funktion RgbToHex mache also wollte ich fragen ob jemand hier ne colorutils hat^^
das würde ich so nicht unterschreiben. Man kann fähig sein ein clickgui selbst zu schreiben, auch ohne das hexadezimale zahlensystem und/oder bitwise operations zu können. Ist um einiges leichterWenn du schon skiddest dann skidde dir die colorutils mit, du brauchst sowas nicht wenn du weißt wie man ein clickgui macht.
Sehr gut erklärt..."hex", oder eher das Hexadezimalsystem ist ein Zahlensystem und kein extra Datentyp (in Java), also ist "ff00f2f1" exakt das gleiche wie "4278252273" (gilt natürlich auch für das Oktal- und Binärsystem).
Warum man das Hexadezimalsystem öfter als das Dezimalsystem bei "Farbcodes" verwendet, kommt daher, dass es sehr viel leichter ist.
0xaarrggbb | 16777216 * a + 65535 * r + 256 * g + b = a << 24 | r << 16 | g << 8 | b
z.B. 0xff00e2aa = 4278248106 = 16777216 * 255 + 65535 * 0 + 256 * 226 + 170 =
255 << 24 | 0 << 16 | 226 << 8 | 170
EDIT:
Ich erkläre jetzt noch wie diese (a << 24 | r << 16 | g << 8 | b) Rechenoperation funktioniert:
Erst einmal wird a (alpha) um 24 Bits nach links geschoben. (<<)
z.B. 0b00000000000000000000000011111111 (0xff) wird zu 0b11111111000000000000000000000000 (0xff000000).
Das gleiche mit r, nur da sind es 16 Stellen.
Danach wird ein Bitwise OR verwendet.
z.B. 0b11111111000000000000000000000000 und 0b00000000101101010000000000000000 werden zu 0b11111111101101010000000000000000.
Dies geschieht mit allen hier festgelegten Variablen, bis auf 'b' (blue), denn dort wird es um 0 verschoben -> nichts passiert.
EDIT #2:
a, r, g und b sollten dafür zwischen 0 und 255 liegen.
Kann man entweder erzwingen, in dem man diese als bytes deklariert, oder eine Operation wie diese benutzt: (a & 0xFF) << 24 | (r & 0xFF) << 16 | (g & 0xFF) << 8 | (b & 0xFF).
Das Bitwise and (&) bewirkt, dass die jeweiligen Bits nur 1 sind, wenn beide Bits den vom Wert 1 sind.
wtf hast du überhaupt gelesen was ich geschrieben habe ? Ich wollte damit sagen dass er wahrscheinlich eins geskidded hat weil ich zb habe meins selbst gemacht und hatte nicht irgendein colorutil gebraucht. AUch total unnötigdas würde ich so nicht unterschreiben. Man kann fähig sein ein clickgui selbst zu schreiben, auch ohne das hexadezimale zahlensystem und/oder bitwise operations zu können. Ist um einiges leichter
entschuldigung das ich erst jetzt antworte und das ich dich missverstanden habe, kann ja mal vorkommenwtf hast du überhaupt gelesen was ich geschrieben habe ? Ich wollte damit sagen dass er wahrscheinlich eins geskidded hat weil ich zb habe meins selbst gemacht und hatte nicht irgendein colorutil gebraucht. AUch total unnötig
Nvmentschuldigung das ich erst jetzt antworte und das ich dich missverstanden habe, kann ja mal vorkommen