How do I get a rainbow color gradient in C#?

后端 未结 7 2170
太阳男子
太阳男子 2020-12-03 05:18

I\'d like to have an enumeration of Colors based on the rainbow colors (red... yellow... green... blue...).

I see basically two ways to do that:

  1. Cre

7条回答
  •  余生分开走
    2020-12-03 05:40

    Here's one I like to use (the output is an HTML RGB color):

    public static String Rainbow(Int32 numOfSteps, Int32 step)
            {
                var r = 0.0;
                var g = 0.0;
                var b = 0.0;
                var h = (Double)step / numOfSteps;
                var i = (Int32)(h * 6);
                var f = h * 6.0 - i;
                var q = 1 - f;
    
                switch (i % 6)
                {
                    case 0:
                        r = 1;
                        g = f;
                        b = 0;
                        break;
                    case 1:
                        r = q;
                        g = 1;
                        b = 0;
                        break;
                    case 2:
                        r = 0;
                        g = 1;
                        b = f;
                        break;
                    case 3:
                        r = 0;
                        g = q;
                        b = 1;
                        break;
                    case 4:
                        r = f;
                        g = 0;
                        b = 1;
                        break;
                    case 5:
                        r = 1;
                        g = 0;
                        b = q;
                        break;
                }
                return "#" + ((Int32)(r * 255)).ToString("X2") + ((Int32)(g * 255)).ToString("X2") + ((Int32)(b * 255)).ToString("X2");
            }
    

提交回复
热议问题