Was ist der beste Weg, um einen zufälligen Pinsel aus der System.Drawing.Brushes-Sammlung in C# auszuwählen?Was ist der beste Weg, um einen zufälligen Pinsel aus der Brushes-Sammlung in C# auszuwählen?
6
A
Antwort
13
Wenn Sie nur eine feste Bürste mit einer zufälligen Farbe möchten, können Sie dies versuchen:
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
Eine naheliegende Möglichkeit besteht darin, eine Zufallszahl zu generieren und dann den entsprechenden Pinsel auszuwählen.
2
Ich schlage vor, eine Liste mit genügend Probe Bürsten bekommen und von dort zufällig ausgewählt wird.
Lediglich eine zufällige Farbe zu erhalten, wird schreckliche Farben ergeben, und Sie könnten leicht eine Liste mit vielleicht 50 Farben erstellen, die Sie dann jedes Mal verwenden können, wenn Sie eine zufällige Farbe benötigen.
3
Für WPF verwenden Reflexion:
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);
erste Mal, dass ich jemanden mit sehen byte.MaxValue ... – sloth