2013-12-16 3 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은 녹색과 파란색의 0 % 채도로 100 % 포화 빨간색입니다. 이것은 순수한 빨강으로 얻을 수있는만큼 포화 상태입니다.
  3. 50, 0, 0은 녹색과 파란색이없는 빨간색입니다. 이것은 검은 색의 부재로, 진한 빨간색이됩니다. 당신의 스펙트럼의 각 색상, 녹색, 파랑 빨강의 같은 비율을 유지함으로써

, 당신은 더 많은 포화 있도록 (가까운 255)에 %를 운전하고 %를 낮출 수있다 (0에 가까워)을 사용하여 동일한 색상의 채도를 낮 춥니 다 (어둡게).

희망이 있습니다.