我環顧四周,但沒有看到這個問題 - 也許它太容易了,但我沒有它。轉換rgb值到System.Drawing
如果我有一個像包含文件的顏色值:
255, 65535, 65280(我認爲這是綠色)
是有辦法之一:
- 將這些到一個System.Drawing.Color類型或....更好..
- 有.NET接受它們是爲了表示顏色?
感謝,
我環顧四周,但沒有看到這個問題 - 也許它太容易了,但我沒有它。轉換rgb值到System.Drawing
如果我有一個像包含文件的顏色值:
255, 65535, 65280(我認爲這是綠色)
是有辦法之一:
感謝,
從這個答案似乎在文件中每個數字代表一種顏色的早期版本的意見,而這些都擠滿字節:
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)=紅色。我不確定你的數字是否按照正確的順序排列,這就是爲什麼我已經介紹了明確的拆包技術。
這是你如何使用顏色類型:
dim someColor as Color = color.FromArgb(red, green, blue)
Imports System.Drawing
對不起,我不是故意要說逗號分隔的字符串是我的顏色,而是:有沒有辦法將65535變成rgb sequnce。 或65280成rgb序列。是否有任何方法將像65535這樣的數字轉換爲(0,255,0)或有些關閉。謝謝。 – Chris
我的意思是把65820變成(0,255,0)。 65535會變成(255,255,0)。我問這個是因爲我想從65535這樣的數字轉到System.Drawing.Color類型。如果我可以從65535去(255,255,0),那麼我可以從那裏;)thx – Chris
我已經更新了我的答案,以描述如何從數字值中提取字節值。 – itowlson