Разделение цвета на каналы ARGB

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

Реклама

Мы в соцсетях

tw tg yt gt