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

liv*_*muk 4 c# rgb integer

我正在使用以下内容将RGB值转换为单个整数:

public static int RGBtoInt(int red, int greed, int blue)
{
    return blue + green + (green * 255) + (red * 65536);
}
Run Code Online (Sandbox Code Playgroud)

但是努力编写一个反向方法,接受一个整数并返回单个RGB组件.

一些主题性的:

public static Vector3 IntToRgb(int value)
{
    // calculations...
    return new Vector3(red, green, blue); 
}
Run Code Online (Sandbox Code Playgroud)

Color.FromArgb(int)方法不是创建我需要的RGB颜色.

RGBtoInt上面的函数匹配OpenGL返回的RGB整数值,我正在寻找一个反向方法.这与此处使用的转换方法相同.

Cod*_*dor 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); 
}
Run Code Online (Sandbox Code Playgroud)

据我了解,初始转换应按如下方式进行.

public static int RGBtoInt(int r, int g, int b)
{
    return ( r << 0 ) | ( g << 8 ) | ( b << 16 );
}
Run Code Online (Sandbox Code Playgroud)

  • 初始转换应为`(r >> 0)| (g >> 8)| (b >> 16);`(请注意`|`而不是'&') (2认同)