2013-12-16 73 views
1

我想創建一個類似於MS Paint的拾色器。我在創建彩虹拾色器時錯過了什麼顏色?

不幸的是,我無法弄清飽和度的算法。

enter image description here

這就是我目前的算法創建。 任何時候我嘗試在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--; 
     } 
    } 

回答

0

如你在RGB工作,255被100%的飽和上的每個顏色,所以:

  1. 255,255,255是白色的或100%飽和的(混合所有顏色)
  2. 255,0,0是100%飽和的紅色,0%的綠色和藍色飽和。這是飽和的,你可以得到純紅色。
  3. 50,0,0有點紅,沒有綠色和藍色。這將是一個暗紅色,因爲沒有顏色=黑色。

通過保持紅色相同比率以綠色到藍色,在您的頻譜每一種顏色,你可以只哄擡%(接近255),以使更多的飽和,以及降低%(接近0 )使相同的顏色飽和度較低(較暗)。

希望有所幫助。