вращающиеся цвета? - PullRequest
       11

вращающиеся цвета?

0 голосов
/ 06 марта 2012

Я пытаюсь повернуть цвета для функции рисования, любой из которых похож на другой и может помочь заставить его выглядеть хорошо.

    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);
    }

редактировать

купить вращающиеся цвета, я хочу, чтобы моя кисть поблекла от красного до синего и от синего до зеленого, затем от желтого и обратно к красному, я сделал несколько больше, глядя на это, и это то, что я хочу

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 или я могу сделать это более разумно?


редактировать

Моя текущая логика такова

    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 Ответ

2 голосов
/ 06 марта 2012

Если вы хотите добиться плавного изменения цвета, вам следует рассмотреть возможность использования цветового пространства HSV.На самом деле значение оттенка (H) измеряется в градусах, что приводит к вращающемуся цвету, когда вы увеличиваете это значение и оставляете остальные.

Вот способ преобразования пространства HSV в значение по умолчаниюцвет.Я думаю, вы должны быть в состоянии преобразовать код VB в C #.

...