2012-05-12 85 views

回答

3

我認爲這應該工作

int RGB = alpha; 
RGB = (RGB << 8) + red; 
RGB = (RGB << 8) + green; 
Rgb = (RGB << 8) + blue; 

有沒有位轉移的另一種方式,但我相信你會找到答案。

這一個是好的,太:

int rgba = new java.awt.Color(r,g,b,a).getRGB(); 
+0

你是絕對驚人!謝謝!哦,發現一個小問題,這個命令有點關閉,這裏是我的語法: int newRGB = alpha; newRGB =(newRGB << 8)+ red; newRGB =(newRGB << 8)+ green; newRGB =(newRGB << 8)+ green; newRGB =(newRGB << 8)+ blue; –

+0

你的位移是錯誤的,'Color'沒有'toRGB'。我堅信,儘可能避免按位操作,並且「顏色」允許人們這樣做。 –

+0

從JDK1.0開始'Color'具有'getRGB()'?它返回'int'。請參閱http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#getRGB%28%29。 –

2

我會用java.awt.Color這一點。

int ARGB = new Color(red, green, blue, alpha).getRGB(); 

我猜你是使用按位運算拔出個別顏色通道,但再次Color類可以隱藏那些血淋淋的細節。

Color color = new Color(ARGB); 
int red = color.getRed(); 
int green = color.getGreen(); 
// etc. 
3
// to extract the components into individual ints. 
int argb = something(); 
int red = 0xFF & (argb >> 16); 
int alpha = 0xFF & (argb >> 24); 
int blue = 0xFF & (argb >> 0); 
int green = 0xFF & (argb >> 8); 

// to recreate the argb 
int argb = (alpha << 24) | (red << 16) | (green<<8) | blue; 
相關問題