Harlequin: int alpha = (argb >> 24) & 0xff;

Beitrag lesen

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]-->