2012-01-11 14 views
0

C#WebBrowserコントロールを使用していて、文字列をHTML/CSSレインボーに変換しようとしています。現在、私は単純に16進形式で1000色をランダムに生成し、文字列内の各文字を繰り返して、各文字に対してspanのスタイルcolor:(hex value)を追加します。それは動作しますが、より多くのレインボー効果のために色を一緒にマージすることを望みます。これは可能ですか?ここに私の現在の機能があります:C#Rainbowテキスト(16進形式)

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; 
    } 
+0

ので、これはC#1よりもCSSの質問の本当に多くのである:ここでは説明を見つけます。 – apiguy

+0

私は同意するだろうが、私はC#の文字列に虹のスパンを格納する必要があるので、私はCSSやjavascriptの答えを実装することはできません。私は基本的に、HTMLドキュメントinnerHTMLを操作して、C#環境で呼び出されたときにWebBrowserに渡しています。 –

+0

あなたが望むものは完全に明確ではありません。あなたは、色がすべてランダムではなく、徐々に変化するようにしたいのですか? –

答えて

1

シンプル; Randomを使用しないでください!このような

何かがあなたが始めるのに役立つことがあります。

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

255のステップで緑から赤にフェードします。

HTH!

+0

これはちょうど私が信じる必要があるトラックです。これはカラーチャートの1つのスペクトルをカバーしています。私はこれを見て、これをよりよく説明するいくつかのjavascriptの例を見つけました。あなたのやり方はうまくいきますが、色を少し早く変えたいと思ったらどうしたらいいですか? 4〜5文字ごとに新しい色調にフェードし始めます。 [Javascriptの例](http://rainbow.arch.scriptmania.com/scripts/rainbowtext2.html) –

+0

ステップを大きくするだけです。 'for(int i = 0; i <256; i + = 51)' –

関連する問題