怎么做那个渐变色彩生成器?

时间:2009-06-12 12:21:01

标签: c# .net asp.net algorithm

我如何生成16色。我的首发颜色是“红色”,我的终端颜色是“卡其色”。我必须插入14种颜色。但它看起来像渐变流动。例如color.Black不是来自红色。暴力应该从红色变红。

1 个答案:

答案 0 :(得分:11)

你应该能够插值吗?这个例子是winforms,但数学是相同的 - 只是用ASP.NET,你必须用十六进制形式写颜色。你也可能(使用ASP.NET)需要单独找到RGB值 - 但是对于信息,卡其(在winforms中)是{240,230,140}(红色显然是{255,0,0})。

using System.Drawing;
using System.Windows.Forms;

static class Program {
    static void Main()
    {
        Form form = new Form();
        Color start = Color.Red, end = Color.Khaki;
        for (int i = 0; i < 16; i++)
        {
            int r = Interpolate(start.R, end.R, 15, i),
                g = Interpolate(start.G, end.G, 15, i),
                b = Interpolate(start.B, end.B, 15, i);

            Button button = new Button();
            button.Dock = DockStyle.Top;
            button.BackColor = Color.FromArgb(r, g, b);
            form.Controls.Add(button);
            button.BringToFront();
        }

        Application.Run(form);
    }
    static int Interpolate(int start, int end, int steps, int count)
    {
        float s = start, e = end, final = s + (((e - s) / steps) * count);
        return (int)final;
    }    
}