Выбор цвета не дает градиента - PullRequest
1 голос
/ 12 июня 2009

я добавил ниже коды. Но он генерирует мне 16 цветов. но мне нужно 16 цветов между "красным" и "хаки". мне не нужен градиент потока. Мои цвета выглядят как градиентный поток. Мои цвета не должны быть ближе друг к другу. Потому что я буду использовать эти коды возвращают значения в столбцах диаграммы. они слишком близко друг к другу.

  static class Program
    {

        [STAThread]
        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;
        }
    }

Ответы [ 2 ]

2 голосов
/ 12 июня 2009

Пересмотренный текст вопроса довольно ясен: вам нужно 16 цветов с градиентом «между» красным и хаки, где визуальная разница между любыми двумя цветами визуально более значительна, чем выбранные вами цвета.

Возможно, лучшим заголовком было бы «Какой алгоритм я могу использовать для генерации 16 визуально различимых цветов между красным и хаки?»

Я не думаю, что есть один. Красный (255, 255, 0) и хаки (255, 240, 230) просто ничем не отличаются: разница RGB = (0,15, -230)

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

Я думаю, вам нужно либо a) выбрать разные конечные точки, либо b) выбрать отдельные цвета, не пытаясь получить их между своими конечными точками

Или, возможно, вы захотите посмотреть эту ветку о выборе разных цветов.

2 голосов
/ 12 июня 2009

Вот вывод программы. Я думаю, что он хочет цвета в диапазоне красного / хаки, но не настолько близки друг к другу. Я думаю, что он хочет что-то выбрать дополнительные цвета, аналогично http://www.colorschemer.com/online.html

Пример выполнения http://img196.imageshack.us/img196/9256/20090612094934.png

...