2011-08-31 57 views
1

我正在Java/Android中工作,我想採用int color,並將其分成4個字節的紅色,綠色,藍色和alpha。我知道Color提供了提取特定顏色值的方法,但它將它們作爲int。我已經通過了SDK,發現Color.red(color)方法與(color >> 16) & 0xFF相同,說實話,我不知道這意味着什麼,但我想我可以用某種方式使用它。如何從顏色中提取ARGB並將它們轉換爲字節組件?

我試着做

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

但這似乎並沒有工作。整點是這樣的,我可以將數值輸入到OpenGL中,使用方法

glColorPointer(4, GL_UNSIGNED_BYTE, 4, myColors); 

myColors是一個字節[]。

任何幫助/提示/積分將不勝感激。

回答

1

如果Color具有提取特定顏色值的方法,則將紅色提取爲int並將其設爲Hex,然後將其設爲綠色,然後將其設爲藍色。你可能也想提取alpha。用Integer.toHexString(int)可以打印int的十六進制值。 (color >> 16) & 0xFF將紅色(通過位移和添加)定位到非alpha顏色的6個十六進制中的前2個。非alpha彩色RBG由3個字節的信息組成。每個字節都是一個顏色,順序爲R(紅色)B(藍色)G(綠色)。 0xFF是一個字節,如果設置爲紅色意味着顏色有全紅等等等

+0

我知道它由字節組成,但我在將它分成4個字節(argb)時出現問題。除了將int轉換爲字符串並返回到一個字節之外,還有別的方法嗎?這似乎是更多的工作,而不是應該需要的。 –

+1

嘗試偏移所有顏色,如紅色 – weakwire

相關問題