生成唯一随机显着颜色?

问题描述:

我想在c#或vb.net中生成独特和突出的随机颜色。我现在使用下面的代码。但是这个代码生成的颜色几乎是同一种颜色,没有太大的变化生成唯一随机显着颜色?

独特的颜色怎么样?

Private Function GetRandomColor() As Color 
     Dim RandGen As New Random() 
     Return Color.FromArgb(RandGen.Next(70, 200), RandGen.Next(100, 225), 
     RandGen.Next(100, 230)) 
    End Function 
+0

只是有点挑剔的 - 唯一不是随机数的质量有保证。 – 2011-04-15 15:58:49

尝试随机选择的RGB值中的一个是低的(0-100)。

它很可能是因为您每次都创建一个Random的新实例。尝试将实例方法中,如在类层次之外,并且看看是否有帮助

Dim RandGen As New Random() 

    Private Function GetRandomColor() As Color 
     Return Color.FromArgb(RandGen.Next(70, 200), RandGen.Next(100, 225), 
     RandGen.Next(100, 230)) 
    End Function 

你会最好使用一个生成HSL颜色的类,这样可以更容易控制突出显示。有几个类在那里

如...

http://www.geekymonkey.com/Programming/CSharp/RGB2HSL_HSL2RGB.htm

http://richnewman.wordpress.com/hslcolor-class/

有在亮度控制/饱和度意味着你可以在任何得到鲜明的色彩色相..

使用richnewmans类...

var c = new HSLColor(new Random(0,100),80,80); 

我们只是在色调设置一个随机值,Sat和Lum可以固定在任何看起来最好