我将RGB值转换为单个整数,其中包含以下内容:
public static int RGBtoInt(int red, int greed, int blue)
{
return blue + green + (green * 255) + (red * 65536);
}
但是努力编写一个反向方法,接受一个整数并返回单个RGB组件。
主题性的东西:
public static Vector3 IntToRgb(int value)
{
// calculations...
return new Vector3(red, green, blue);
}
Color.FromArgb(int)
方法不能创建我需要的RGB颜色。
上面的RGBtoInt
函数与OpenGL返回的RGB整数值匹配,我正在寻找一种反向方法。它与here使用的转换方法相同。
答案 0 :(得分:9)
转换可以按如下方式完成。
public static Vector3 IntToRgb(int value)
{
var red = ( value >> 0 ) & 255;
var green = ( value >> 8 ) & 255;
var blue = ( value >> 16 ) & 255;
return new Vector3(red, green, blue);
}
据我了解,初始转换应按如下方式进行。
public static int RGBtoInt(int r, int g, int b)
{
return ( r << 0 ) | ( g << 8 ) | ( b << 16 );
}
答案 1 :(得分:3)
试试这个Color c = Color.FromArgb(someInt);
然后分别使用c.R
,c.G
和c.B
表示红色,绿色和蓝色值