Yerf!
Hallo an alle Java Profis !
Ich bin zwar keiner, aber ich versuch mich trotzdem mal an einer Antwort, da es hier hauptsächlich um Bitoperationen geht.
Nur leider verstehe ich das ganze nicht so recht. Vor allem die Zeile:
int alpha = (argb >> 24) & 0xff;
argb ist ein 32Bit Wert der die Farbe + Transparenz enthält
Bitweise aufgeschlüsselt (a=transparenz, rgb=Farbkomponenten):
aaaaaaaa rrrrrrrr gggggggg bbbbbbbb
24 bedeutet eine verschiebung oder Rotation um 24 bit (bin mir jetzt nicht ganz sicher, ist aber hier egal)
Verschiebung:
00000000 00000000 00000000 aaaaaaaa
Rotation:
rrrrrrrr gggggggg bbbbbbbb aaaaaaaa
Der bitweiese UND ( & 0xff) "filtert" nun (und ist eigenlich auch ein Hinweis, dass eine Rotation stattfindet ;-):
0xFF:
00000000 00000000 00000000 11111111
Ergebnis:
00000000 00000000 00000000 aaaaaaaa
Für alle transparenten Farben wird eine 0 zurückgegeben. Warum? Und was wird zurückgegeben wenn das Pixel nicht transparent ist?
Die Rückgabe ist der reine Transparenzwert des Pixels. Bei vollständiger Transparenz ist dieser 0, bei vollständiger Sichtbarkeit 255.
Gruß,
Harlequin
<!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->