web-dev-qa-db-fra.com

Obtenez une couleur aléatoire

Connaissez-vous une méthode pour générer une couleur aléatoire (pas un nom de couleur aléatoire!)?

J'en ai déjà un, mais celui-ci ne le fait pas correctement:

Cela ne renvoie que Vert:

Random r = new Random();
BackColor = Color.FromArgb(r.Next(0, 256), r.Next(0, 256), 0);

Cela ne renvoie que Rouge:

Random r = new Random();
BackColor = Color.FromArgb(r.Next(0, 256), 0, 0);

Cela ne renvoie que Blue:

Random r = new Random();
BackColor = Color.FromArgb(0, 0, r.Next(0, 256));

Je veux que mon code retourne une couleur aléatoire, non seulement verte/rouge/bleue à chaque fois, comme les précédentes.

Comment résoudre ça?

Toute suggestion sera approuvée avec joie!

13
cramopy

Voici la réponse que j'ai commencé à publier avant de supprimer puis de supprimer votre question:

public partial class Form1 : Form
{
    private Random rnd = new Random();

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Color randomColor = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
        BackColor = randomColor;
    }
}
26
Rufus L

La version originale de votre dernière méthode (pré-édition) renverra toutes sortes de couleurs. Je serais sûr d'utiliser un seul objet Random plutôt que d'en créer un nouveau à chaque fois:

Random r = new Random();
private void button6_Click(object sender, EventArgs e)
{
    pictureBox1.BackColor = Color.FromArgb(r.Next(0, 256), 
         r.Next(0, 256), r.Next(0, 256));

    Console.WriteLine(pictureBox1.BackColor.ToString());
}

Il produit toutes sortes de couleurs différentes:

Couleur [A = 255, R = 241, G = 10, B = 200]
Couleur [A = 255, R = 41, G = 125, B = 132]
Couleur [A = 255, R = 221, G = 169, B = 109]
Couleur [A = 255, R = 228, G = 152, B = 197]
Couleur [A = 255, R = 50, G = 153, B = 103]
Couleur [A = 255, R = 92, G = 236, B = 162]
Couleur [A = 255, R = 52, G = 103, B = 204]
Couleur [A = 255, R = 197, G = 126, B = 133]