Как я могу извлечь ARGB из цвета и преобразовать их в байтовые компоненты?

1

Я работаю на Java/Android, и я хочу взять цвет 0xFFFFFFFF и разбить его на 4 байта для красного, зеленого, синего и альфа. Я знаю, что у Color есть методы для извлечения определенных значений цвета, но он дает им как int. Я прошел через SDK и обнаружил, что метод Color.red(color) совпадает с выражением (color >> 16) & 0xFF, честно говоря, я понятия не имею, что это значит, но я думаю, что могу каким-то образом использовать это,

Я пробовал делать

byte red = (byte)Color.red(color);

но это, похоже, не работает. Все дело в том, что я могу комбинировать значения в OpenGL с помощью метода

glColorPointer(4, GL_UNSIGNED_BYTE, 4, myColors);

myColors является байтом [].

Любая помощь/советы/баллы были бы весьма полезны.

Теги:

1 ответ

1

Если у Цвет есть методы для извлечения определенных значений цвета, извлеките Red как int и сделайте его Hex, затем Green, затем Blue. Вы также можете извлечь альфу. с Integer.toHexString(int) вы можете напечатать значение Hex для int. (color >> 16) & 0xFF позиционирует красный цвет (путем смещения бит и добавления) к первым двум из шести шестигранников не-альфа-цвета. non alpha Color RBG состоит из 3 байтов информации. Каждый байт является одним цветом с порядком R (красный) B (синий) G (зеленый). 0xFF - один байт, если установлено значение "Красный", означает, что цвет имеет полный красный и т.д. И т.д.

  • 0
    Я понимаю, что он состоит из байтов, но у меня возникают проблемы с разбиением его на 4 байта (argb). Нет ли другого способа, кроме как превратить int в строку, а затем обратно в байт? Кажется, это просто намного больше работы, чем нужно.
  • 1
    попробуйте сдвинуть все цвета, как красный

Ещё вопросы

Сообщество Overcoder
Наверх
Меню