Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Colors 在创建彩虹颜色选择器时,我缺少什么来饱和颜色?_Colors_Color Profile - Fatal编程技术网

Colors 在创建彩虹颜色选择器时,我缺少什么来饱和颜色?

Colors 在创建彩虹颜色选择器时,我缺少什么来饱和颜色?,colors,color-profile,Colors,Color Profile,我正在尝试创建一个类似于MS Paint的颜色选择器 不幸的是,我不知道饱和的算法 这就是我当前的算法所创建的。 每当我尝试在Y轴上执行饱和效果时,它只会使第一行之后的所有内容完全变成红色或黑色 public ColorWheel() { for (int y = 0; y < 255; y++) { for (int x = 0; x < 255 * 6; x++) {

我正在尝试创建一个类似于MS Paint的颜色选择器

不幸的是,我不知道饱和的算法

这就是我当前的算法所创建的。 每当我尝试在Y轴上执行饱和效果时,它只会使第一行之后的所有内容完全变成红色或黑色

    public ColorWheel()
    {
        for (int y = 0; y < 255; y++)
        {
            for (int x = 0; x < 255 * 6; x++)
            {
                //Red 255 - Green 0-254
                if (color.R == brightness && color.G < brightness && color.B == 0)
                {
                    color.G += 1;

                    //color.R -= (byte)y;
                    //color.G += (byte)y;
                    //color.B += (byte)y;
                }
                //Green 255 - Red 255-0
                else if (color.R > 0 && color.G == brightness && color.B == 0)
                {
                    color.R -= 1;

                    //color.R -= (byte)y;
                    //color.G -= (byte)y;
                    //color.B += (byte)y;
                }
                //Green 255 - Blue 0-255
                else if (color.R == 0 && color.G == brightness && color.B < brightness)
                {
                    color.B += 1;

                    //color.R += (byte)y;
                    //color.G -= (byte)y;
                    //color.B += (byte)y;
                }
                //Blue 255 - Green 255-0
                else if (color.R == 0 && color.G > 0 && color.B == brightness)
                {
                    color.G -= 1;

                    //color.R += (byte)y;
                    //color.G -= (byte)y;
                    //color.B -= (byte)y;
                }
                //Blue 255 - Red 0-255
                else if (color.R < brightness && color.G == 0 && color.B == brightness)
                {
                    color.R += 1;

                    //color.R += (byte)y;
                    //color.G += (byte)y;
                    //color.B -= (byte)y;
                }
                //Red 255 - Blue 255-0
                else if (color.R == brightness && color.G == 0 && color.B > 0)
                {
                    color.B -= 1;

                    //color.R -= (byte)y;
                    //color.G += (byte)y;
                    //color.B -= (byte)y;
                }

                image.SetPixel((uint)x, (uint)y, color);
            }

                //brightness--;
        }
    }
public ColorWheel()
{
对于(int y=0;y<255;y++)
{
对于(int x=0;x<255*6;x++)
{
//红色255-绿色0-254
if(color.R==亮度和颜色.G<亮度和颜色.B==0)
{
颜色G+=1;
//color.R-=(字节)y;
//color.G+=(字节)y;
//color.B+=(字节)y;
}
//绿色255-红色255-0
else if(color.R>0&&color.G==亮度&&color.B==0)
{
颜色R-=1;
//color.R-=(字节)y;
//color.G-=(字节)y;
//color.B+=(字节)y;
}
//绿色255-蓝色0-255
else if(color.R==0&&color.G==brightness&&color.B0&&color.B==亮度)
{
颜色G-=1;
//color.R+=(字节)y;
//color.G-=(字节)y;
//color.B-=(字节)y;
}
//蓝色255-红色0-255
else if(color.R0)
{
颜色B-=1;
//color.R-=(字节)y;
//color.G+=(字节)y;
//color.B-=(字节)y;
}
设置像素((uint)x,(uint)y,颜色);
}
//亮度--;
}
}

当您使用RGB时,每种颜色上的255是100%饱和的,因此:

  • 255、255、255为白色或100%饱和(混合所有颜色)
  • 255,0,0是100%饱和红色,0%饱和绿色和蓝色。这是纯红色所能达到的饱和状态
  • 50,0,0是一点点红色,没有绿色和蓝色。这将是一个深红色,因为没有颜色=黑色
  • 对于光谱中的每种颜色,保持相同的红、绿、蓝比例,只需提高%(接近255)使其更饱和,降低%(接近0)使其不饱和(更暗)

    希望有帮助