Разделение цвета на каналы ARGB
- int argbColor;
- int alpha=argbColor>>24;
- //перемещаем первый байт в конец
- //пример: было 0xff000000
- //станет 0xffffffff или
- //0xe60634a7 станет 0xffffffe6
- //затем нужно извлечь наш последний байт, приравняв остальные к нулю
- alpha=alpha&0xff;
- //аналогично и остальные каналы...
- int red=(argbColor>>16)&0xff;
- int green=(argbColor>>8)&0xff;
- int blue=argbColor&0xff;
- //обратите внимание, когда находим синий канал, мы ничего не перемещаем, потому что нуржный нам байт итак стоит на последнем месте
код будет полезен тем, кто пытается выделить каналы способом деления и остатком от деления, например alpha=argbColor/0x1000000;
(в этом случае результатом является какое-то сумасшедшее отрицательное число)
(в этом случае результатом является какое-то сумасшедшее отрицательное число)