2011-04-15 4 views
0

J'essaie de générer des couleurs uniques et très visibles dans C# ou vb.net. J'utilise le code ci-dessous maintenant. Mais ce code générant la couleur presque la même couleur, pas de gros changement.Générer Unique Aléatoire couleur?

Comment un type de couleur unique peut-il être utilisé?

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

Juste être un peu tatillon - l'unicité n'est pas une garantie de qualité de nombres aléatoires. –

+0

duplication possible de [rencontre aléatoire pas si aléatoire] (http://stackoverflow.com/questions/2727538/random-encounter-not-so-random) –

Répondre

2

Essayez de choisir au hasard une des valeurs RVB faible (0-100).

2

C'est plus que probablement parce que vous créez une nouvelle instance de Random à chaque fois. Essayez de déplacer l'instance en dehors de la méthode, par exemple au niveau de la classe, et voir si cela aide

à savoir

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 
1

Il serait préférable d'utiliser une classe qui génère des couleurs HSL, de sorte qu'il est plus facile de contrôler la proéminence. Il y a quelques classe là-bas

Tels que ...

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

ou

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

Avoir le contrôle sur la luminosité/saturation signifie que vous pouvez obtenir des couleurs éclatantes à tout hue ..

Utilisation de la classe richnewmans ...

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

nous ne définir une valeur aléatoire dans la teinte et l'assise et lum peut être fixé à tout semble le mieux