2011-05-25 54 views
13

所以現在我有一個介於0和2^24之間的數字,我需要將它映射到三個RGB值。我在如何完成這件事方面遇到了一些麻煩。任何援助表示讚賞。將整數映射到C#中的RGB顏色

+0

是您的表格0x00RRGGBB(十六進制)的號碼? – 2011-05-25 21:56:17

回答

16

你可以做

Color c = Color.FromArgb(someInt); 

然後用c.Rc.Gc.B爲紅色,綠色和藍色值分別

+0

哈,我可以發誓我已經試過了。人爲錯誤,我想。謝謝您的幫助。 – 2011-05-25 22:44:41

13

根據其顏色在這裏,你可以使用比特移位來獲取個人顏色是這樣的:

int rgb = 0x010203; 
var color = Color.FromArgb((rgb >> 16) & 0xff, (rgb >> 8) & 0xff, (rgb >> 0) & 0xff); 

上述表達式假定爲0x00RRGGBB,但您的顏色可能是0x00BBGGRR在這種情況下,只需更改16, 8, 0左右的值。

這也使用System.Drawing.Color而不是System.Windows.Media.Color或您自己的顏色類。這取決於應用程序。

3

可以使用BitConverter類從INT得到字節:

byte[] values = BitConverter.GetBytes(number); 
if (!BitConverter.IsLittleEndian) Array.Reverse(values); 

數組將有四個字節。前三個字節包含您的編號:

byte b = values[0]; 
byte g = values[1]; 
byte r = values[2]; 
2

上面的代碼工作的格柵。只是一個小小的更正,需要交換b和r如下。

byte r = values[0]; 
byte g = values[1]; 
byte b = values[2]; 
+0

Sunil,這應該是Guffa的帖子的評論,而不是對原始問題的回答。這主要是因爲你的答案根本不能回答原來的問題。 – Kevek 2011-09-06 22:43:27