2012-11-13 90 views
11

我所拥有的是R:255 G:181 B:178,和我工作在C#(对于WP8,更具体)从RGB整数转换为十六进制

我想将此转换为十六进制数字用作颜色(设置WriteableBitmap的像素颜色)。我正在做的是以下几点:

int hex = (255 << 24) | ((byte)R << 16) | ((byte)G << 8) | ((Byte)B<<0); 

但是当我这样做,我只是变蓝。

任何想法我做错了什么?

此外,撤消此,检查RGB值,我打算:

int r = ((byte)(hex >> 16)); // = 0 
int g = ((byte)(hex >> 8)); // = 0 
int b = ((byte)(hex >> 0)); // = 255 
+0

CSS中使用了十六进制格式的颜色。你的意思是?例如白色 - > FFFFFF,蓝色 - > 0000FF? –

+0

你是什么意思“只得到蓝色” - 显示你的期望和你得到什么......(即你目前的代码和值将给FFFFB5B2) –

+0

我的意思是,而不是得到什么颜色:r:255,g: 181,b:178应该是(浅粉红色),我刚刚获得0000FF(蓝色) – Toadums

回答

25
Color myColor = Color.FromArgb(255, 181, 178); 

string hex = myColor.R.ToString("X2") + myColor.G.ToString("X2") + myColor.B.ToString("X2"); 
+1

或者只是在字节 – NoPyGod

+0

上使用ToString(“X2”)部分您说“将其转换为十六进制数”但HEX不是数字,它是用于表示数字的字符串。 – NoPyGod

+0

Oh..sorry我猜测十六进制只是为了让用户更容易看到。但是位图的像素数组是一个int [],所以我需要这个数是一个整数(也就是说如何添加R,G,B) – Toadums

1

您可以使用更短的字符串格式,以避免字符串连接。

string.Format("{0:X2}{1:X2}{2:X2}", r, g, b)