C # Радужный текст (в шестнадцатеричном формате) - PullRequest
0 голосов
/ 11 января 2012

Итак, я использую элемент управления C # WebBrowser и пытаюсь преобразовать строку в радугу HTML / CSS.В настоящее время я просто случайным образом генерирую 1000 цветов в шестнадцатеричном формате и перебираю каждый символ в строке, добавляя span стиль color:(hex value) для каждого символа.Это работает, но я хотел бы, чтобы цвета сливались вместе для большего эффекта радуги.Это возможно?Вот моя текущая функция:

    public static string Rainbow(string text)
    {
        int numColors = 1000;
        var colors = new List<string>();
        var random = new Random();
        for (int i = 0; i < numColors; i++)
        {
            colors.Add(String.Format("#{0:X6}", random.Next(0x1000000)));
        }

        string rainbow = "";
        int index = 0;
        foreach (char c in text)
        {
            rainbow += String.Format("<span style='color: {0};'>{1}</span>", colors[index], c.ToString());

            if (index > numColors)
                index = 0;
            else
                index++;
        }

        return rainbow;
    }

Ответы [ 2 ]

1 голос
/ 11 января 2012

Вы можете использовать функцию преобразования hsv в rgb. Здесь вы найдете описание:

Как получить градиент цвета радуги в C #?

1 голос
/ 11 января 2012

Simple;не используйте Random!

Что-то вроде этого может помочь вам начать:

for (int i = 0; i < 256; i++)
    {
        colors.Add(String.Format("#{0:X2}{1:X2}00", i, 255-i));
    }

для перехода от зеленого к красному за 255 шагов.

HTH!

...