web-dev-qa-db-ja.com

ランダムな色を取得

ランダムな色を生成する方法を知っていますか(ランダムな色名ではありません!)?

私はすでに持っていますが、これは正しくやっていません:

これは緑のみを返します。

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

これは赤のみを返します。

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

これは青のみを返します:

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

上記のコードのように、毎回緑/赤/青だけでなく、1つのランダムな色を返すようにコードを設定します。

これを解決するには?

どんな提案も喜んで承認されます!

13
cramopy

質問を削除してから削除を取り消す前に投稿を開始した回答は次のとおりです。

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

最後のメソッドの元のバージョン(編集前)は、すべての異なる種類の色を返します。毎回新しいオブジェクトを作成するのではなく、必ず単一の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());
}

あらゆる種類の異なる色を生成します。

色[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]