【发布时间】:2012-11-01 12:52:37
【问题描述】:
我拥有的是 R:255 G:181 B:178,我正在使用 C#(更具体地说,对于 WP8)
我想将此转换为十六进制数字以用作颜色(设置 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
【问题讨论】:
-
例如,CSS 中使用了十六进制格式的颜色。你是这个意思吗?例如白色 -> FFFFFF,蓝色 -> 0000FF?
-
你是什么意思“只是变蓝” - 显示你的期望和你得到的......(即你当前的代码和值将给出 FFFFB5B2)
-
我的意思是,我没有得到任何颜色:r:255, g:181, b:178 应该是(浅粉色),我只得到 0000FF(蓝色)
-
您是否尝试将类型转换更改为
int而不是byte?例如:int hex = (255 << 24) | ((int)R << 16) | ((int)G << 8) | ((int)B<<0); -
字节应该没问题...
((255 << 24) | ((byte)255 << 16) | ((byte)181 << 8) | ((Byte)178<<0)).ToString("X")not 是否给出 0000FF。