生成唯一随机显着颜色?
问题描述:
我想在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
答
尝试随机选择的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可以固定在任何看起来最好
只是有点挑剔的 - 唯一不是随机数的质量有保证。 – 2011-04-15 15:58:49