Преобразование цветового формата UINT32 из AaBbGgRr в AaRrGgBb
Я пытаюсь преобразовать цветовой формат UINT32 из AaBbGgRr в AaRrGgBb в C++. Aa = альфа, Bb = синий, Gg = зеленый Rr = красный. Под преобразованием я подразумеваю переключение значений Bb и Rr. Кто-нибудь знает, как мне этого добиться?
1 ответ
Решение
Вы можете использовать маску и сдвиг битов для достижения этой цели:
uint32_t newValue = oldValue;
newValue = newValue & 0xFF00FF00; // open new space to insert the bits
newValue = ((oldValue & 0xFF)<< 16) | newValue; // change BB
newValue = ((oldValue & 0x00FF0000) >> 16) | newValue; // Change RR