获得随机颜色

cra*_*opy 15 c# random colors backcolor winforms

你知道任何生成随机颜色的方法(不是随机颜色名称!)?

我已经有了一个,但这个没有正确地做到:

这只返回绿色:

Random r = new Random();
BackColor = Color.FromArgb(r.Next(0, 256), r.Next(0, 256), 0);
Run Code Online (Sandbox Code Playgroud)

这只返回红色:

Random r = new Random();
BackColor = Color.FromArgb(r.Next(0, 256), 0, 0);
Run Code Online (Sandbox Code Playgroud)

这只返回蓝色:

Random r = new Random();
BackColor = Color.FromArgb(0, 0, r.Next(0, 256));
Run Code Online (Sandbox Code Playgroud)

我希望我的代码返回一个随机颜色,不仅每次都返回绿色/红色/蓝色,如上所述.

怎么解决这个?

任何建议都会得到快乐的批准!

Ruf*_*s L 29

这是我在您删除并删除您的问题之前开始发布的答案:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 上面的代码在 WPF 项目中对我不起作用。需要将随机值转换为字节。Color.FromArgb((字节) rnd.Next(0, 256), (字节) rnd.Next(0, 256), (字节) rnd.Next(0, 256), (字节) rnd.Next(0, 256) )) (2认同)

Ňɏs*_*arp 6

最后一个方法的原始版本(预编辑)将返回所有不同种类的颜色.我肯定会使用单个Random对象,而不是每次都创建一个新对象:

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());
}
Run Code Online (Sandbox Code Playgroud)

它产生各种不同的颜色:

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

  • 确切地说,OP最有可能的问题是每次都创建一个新的随机,然后调用`.Next`,而不是重新使用全局的`Random`对象. (3认同)