如何将整数转换为红色,绿色和蓝色值

时间:2016-04-26 11:28:45

标签: c# integer rgb

我将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使用的转换方法相同。

2 个答案:

答案 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.Rc.Gc.B表示红色,绿色和蓝色值