2012-03-05 2 views
0

메신저 기능을 사용하여 색상을 회전 시키려고했는데 어느 것이나 비슷한 효과를 내며 모양이 좋아 보이도록 도울 수 있습니다.회전하는 색상?

byte r = 200; 
    byte g = 100; 
    byte b = 050; 

    private int x = 1; 

    private void timer_elapsed(object sender, EventArgs e) 
    { 
     x++; 

     if(x % 3 == 0) 
     r++; 

     if(x % 5 == 0) 
     g++; 

     if(x % 2 == 0) 
     b++; 

     if (x > 100) 
      x = 1; 

     if (r >= 254) 
      r = 0; 
     if (g >= 254) 
      g = 0; 
     if (b >= 254) 
      b = 0; 

     inkCanvas1.DefaultDrawingAttributes.Color = Color.FromArgb(255, r, g, b); 
    } 

편집

은 내가 내 브러시가 파란색으로 다시 빨간색으로 그린 ​​후, 노란색과 파란색에서 빨간색에서 페이드 할 뜻 회전 색상을 구입, IV는 솜보기에보고 할 이것이 내가 원하는 것입니다.

254,0,0  = red 
254,0,254 = pink 
0,0,254  = blue 
0,254,254 = cyan 
0,254,0 = green 
254,254,0 = yellow 
254,0,0 = red 

그래서 여기 if 간단한 문장을 보거나 더 똑똑한 방법으로 이것을 할 수 있습니까? 당신이 부드러운 방법으로 색상 변경, 당신은 HSV 색 공간을 사용하는 것이 좋습니다 것을 달성하려면


편집

내 현재의 논리는이

byte r = 255; 
    byte g = 0; 
    byte b = 0; 


    private void timer_elapsed(object sender, EventArgs e) 
    { 
     //going from red to pink 
     if (r == 255 && g == 0 && b <= 254) 
      b++; 
     //going from pink to blue 
     if (r >= 1 && g == 0 && b == 255) 
      r--; 
     //going from blue to cyan 
     if (r == 0 && g <= 254 && b == 255) 
      g++; 
     //going from cyan to green 
     if (r == 0 && g == 255 && b >= 1) 
      b--; 
     //going from green to yellow 
     if (r <= 254 && g == 255 && b == 0) 
      r++; 
     //going from yellow back to red 
     if (r == 255 && g >= 1 && b == 0) 
      g--; 

     inkCanvas1.DefaultDrawingAttributes.Color = Color.FromArgb(255, r, g, b); 
    } 
+1

"회전 색상"이란 무엇입니까? 몇 가지 예를 들려 줄 수 있습니까? – BlackBear

+0

@Darkmage : 정확히 무엇을 의미합니까? – Tigran

+0

내 게시물을 업데이트했습니다. – Darkmage

답변

2

입니다. 사실, 색조 값 (H)은도 단위로 측정되며,이 값을 증가시키고 다른 값을 남길 때 회전 색상이됩니다.

Here's HSV 공간을 기본 색상으로 변환하는 방법. 제 생각에는 VB 코드를 C#으로 변환 할 수 있어야합니다.

+0

+1 자세한 내용은 다음을 참조하십시오. http://en.wikipedia.org/wiki/HSL_and_HSV –