Quelle est la meilleure façon de choisir une brosse aléatoire de la collection System.Drawing.Brushes en C#?Quelle est la meilleure façon de choisir un pinceau aléatoire de la collection de pinceaux en C#?
6
A
Répondre
13
Si vous voulez juste une brosse solide avec une couleur aléatoire, vous pouvez essayer ceci:
Random r = new Random();
int red = r.Next(0, byte.MaxValue + 1);
int green = r.Next(0, byte.MaxValue + 1);
int blue = r.Next(0, byte.MaxValue + 1);
System.Drawing.Brush brush = new System.Drawing.SolidBrush(Color.FromArgb(red, green, blue));
1
Une façon évidente est de générer un nombre aléatoire, puis de choisir le pinceau correspondant.
2
Je suggère obtenir une liste des brosses suffisamment d'échantillons, et en sélectionnant au hasard à partir de là.
Obtenir simplement une couleur aléatoire produira des couleurs terribles, et vous pourriez facilement mettre en place une liste de peut-être 50 couleurs que vous pourriez ensuite utiliser chaque fois que vous en avez besoin d'un aléatoire.
3
Pour WPF, utilisez la réflexion:
var r = new Random();
var properties = typeof(Brushes).GetProperties();
var count = properties.Count();
var colour = properties
.Select(x => new { Property = x, Index = r.Next(count) })
.OrderBy(x => x.Index)
.First();
return (SolidColorBrush)colour.Property.GetValue(colour, null);
première fois que je vois quelqu'un en utilisant byte.MaxValue ... – sloth