Get Random Color [duplicate]

2019-03-25 06:00发布

This question already has an answer here:

Do you know any method to generate a random Color (not a random Color Name!)?

I've already got one, but this one is'nt doing it correctly:

This only returns Green:

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

This only returns Red:

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

This only returns Blue:

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

I want my Code to return one, random Color, not only green/red/blue every time, as the above ones do.

How to solve this?

Any suggestion will be approved with joy!

2条回答
不美不萌又怎样
2楼-- · 2019-03-25 06:40

Here's the answer I started posting before you deleted and then un-deleted your 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;
    }
}
查看更多
劳资没心,怎么记你
3楼-- · 2019-03-25 06:41

The original version of your last method (pre-Edit) will return all different sorts of colors. I would be sure to use a single Random object rather than create a new one each time:

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());
}

It produces all sorts of different colors:

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

查看更多
登录 后发表回答