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

后端 未结 7 2160
太阳男子
太阳男子 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:37

    I like to use this:

    public static Color Rainbow(float progress)
    {
        float div = (Math.Abs(progress % 1) * 6);
        int ascending = (int) ((div % 1) * 255);
        int descending = 255 - ascending;
    
        switch ((int) div)
        {
            case 0:
                return Color.FromArgb(255, 255, ascending, 0);
            case 1:
                return Color.FromArgb(255, descending, 255, 0);
            case 2:
                return Color.FromArgb(255, 0, 255, ascending);
            case 3:
                return Color.FromArgb(255, 0, descending, 255);
            case 4:
                return Color.FromArgb(255, ascending, 0, 255);
            default: // case 5:
                return Color.FromArgb(255, 255, 0, descending);
        }
    }
    

提交回复
热议问题