2010-01-13 73 views
0

我環顧四周,但沒有看到這個問題 - 也許它太容易了,但我沒有它。轉換rgb值到System.Drawing

如果我有一個像包含文件的顏色值:

255, 65535, 65280(我認爲這是綠色)

是有辦法之一:

  1. 將這些到一個System.Drawing.Color類型或....更好..
  2. 有.NET接受它們是爲了表示顏色?

感謝,

回答

1

從這個答案似乎在文件中每個數字代表一種顏色的早期版本的意見,而這些都擠滿字節:

65280 (= 0xFF00) -> (0, 255, 0) 
65535 (= 0xFFFF) -> (255, 255, 0) 

所以你需要三元組的第一個(紅色?)部分中的低位字節,以及三元組中第二個(藍色?)部分中的下一個高位字節。我猜測65535以上的值將進入三元組的第三個字節。

爲此,您可以容易地使用位屏蔽和位移位運算符:

int r = n && 0xFF; 
int g = (n >> 8) & 0xFF; 
int b = (n >> 16) & 0xFF; 

即通過每次8位右移,然後選擇出的低8位。

注意:你也可以直接使用Color.FromArgb(Int32)來做到這一點,它可以讓你不必進行拆箱。但是這隻有在你的文件中的數字以正確的方式打包時纔有效。他們需要採用AARRGGBB格式。例如,255(0x000000FF)=藍色,65280(0x0000FF00)=綠色,16711680(0x00FF0000)=紅色。我不確定你的數字是否按照正確的順序排列,這就是爲什麼我已經介紹了明確的拆包技術。

+0

對不起,我不是故意要說逗號分隔的字符串是我的顏色,而是:有沒有辦法將65535變成rgb sequnce。 或65280成rgb序列。是否有任何方法將像65535這樣的數字轉換爲(0,255,0)或有些關閉。謝謝。 – Chris

+0

我的意思是把65820變成(0,255,0)。 65535會變成(255,255,0)。我問這個是因爲我想從65535這樣的數字轉到System.Drawing.Color類型。如果我可以從65535去(255,255,0),那麼我可以從那裏;)thx – Chris

+0

我已經更新了我的答案,以描述如何從數字值中提取字節值。 – itowlson

2

這是你如何使用顏色類型:

dim someColor as Color = color.FromArgb(red, green, blue) 
  • 一定要使用Imports System.Drawing
  • 更改紅色,綠色和藍色爲他們各自的RGB值(即:0-255)