Это простая функция для преобразования триплета RGB (три знаковых 8-битных значения) в 32-разрядное значение ARGB без знака.
Оператор сдвигает двоичные цифры целого числа влево на указанное количество мест. Так, например, если Yr
= 100, Yg
= 150 и Yb
= 200, то вы бы в конечном итоге с 32-битовым числом 0xFF6496C8, где хранится информация RGB следующим образом:
---- alpha ---- ----- Yr ------ ----- Yg ------ ----- Yb ------
[1 1 1 1 1 1 1 1][0 1 1 0 1 0 0 0][1 0 0 1 0 1 1 0][1 1 0 0 1 0 0 0]
alpha=255=0xFF Yr=0x64=100 Yg=0x96=150 Yb=0xC8=200
альфа-значение (255), по-видимому, соответствует непрозрачности 100%.
В случае, если вам было интересно, оператор &
является логическим оператором AND, который маскирует ненужные биты. В коде, к которому вы привязались, он вообще не нужен, так как значения Yr, Yg и Yb уже находятся в диапазоне от 0 до 255.
Однако оно полезно при извлечении значений RGB из 32-битное целое число ARGB, например:
alpha = (ARGB >> 24) & 0xff;
Yr = (ARGB >> 16) & 0xff;
Yg = (ARGB >> 8) & 0xff;
Yb = ARGB & 0xff;
Спасибо большое! –