23

我所拥有的是 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
4

5 回答 5

50

试试下面的:

using System.Drawing;
Color myColor = Color.FromArgb(255, 181, 178);
string hex = myColor.R.ToString("X2") + myColor.G.ToString("X2") + myColor.B.ToString("X2");
于 2012-11-13T02:51:34.070 回答
16

使用字符串插值,这可以写成:

$"{r:X2}{g:X2}{b:X2}"
于 2018-08-07T15:42:56.963 回答
10

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

string.Format("{0:X2}{1:X2}{2:X2}", r, g, b)
于 2017-12-22T20:56:32.883 回答
2

您可以为此使用ColorHelper库:

using ColorHelper;
RGB rgb = new RGB(100, 0, 100);
HEX hex = ColorConverter.RgbToHex(rgb);
于 2020-09-21T20:43:07.117 回答
1

问候人类同胞,

//Red Value
int integerRedValue = 0;
//Green Value
int integerGreenValue = 0;
//Blue Value
int integerBlueValue  = 0;

string hexValue = integerRedValue.ToString("X2") + integerGreenValue.ToString("X2") + integerBlueValue.ToString("X2");
于 2018-08-23T15:40:08.510 回答