2012-01-11 135 views
0

所以我使用C#WebBrowser控件,并试图将字符串转换为HTML/CSS彩虹。目前,我只是随机生成1000种颜色的十六进制格式,并遍历字符串中的每个字符,为每个字符添加span样式color:(hex value)。它的作品,但我希望颜色合并在一起,为更多的彩虹效果。这可能吗?这里是我目前的功能:C#彩虹文本(十六进制格式)

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

既然你想要的是创造一个WebBrowser控件(基本上是一个网络浏览器)彩虹文字这实在是一个多C#一个CSS问题。 – apiguy 2012-01-11 07:40:16

+0

我同意,但因为我需要将彩虹跨度存储在C#字符串中,所以我无法实现CSS或JavaScript答案。我基本上是在处理HTML文档innerHTML,并在C#环境中调用它时将它传递给WebBrowser。 – 2012-01-11 07:42:37

+0

你想要的不完全清楚。你的意思是你想让颜色逐渐从一个变成另一个pe3r字符,而不是随机的? – 2012-01-11 07:58:13

回答

1

简单;不要使用Random

像这样的东西可以帮助你开始:

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

从绿色渐变为红色255步。

HTH!

+0

这正是我需要相信的轨道。虽然这只涵盖了色谱图的一个光谱。我正在查找这个,并遇到了一些更好地说明这一点的JavaScript例子。你的方式可行,但如果我想让它更快地改变颜色,该怎么办?说每开始4-5个字符,它就开始变成一种新的配色方案。 [Javascript示例](http://rainbow.arch.scriptmania.com/scripts/rainbowtext2.html) – 2012-01-11 08:48:24

+0

只需将步骤变得更大。 'for(int i = 0; i <256; i + = 51)' – 2012-01-11 09:45:50