web-dev-qa-db-ja.com

Javaでランダムな色を作成しますか?

JavaアプリケーションのJPanelにランダムな色のポイントを描画したい。ランダムな色を作成する方法はありますか?

56
Elton.fd

ランダムライブラリを使用します。

import Java.util.Random;

次に、ランダムジェネレーターを作成します。

Random Rand = new Random();

色は赤、緑、青に分かれているので、ランダムな原色を作成して、新しいランダムな色を作成できます。

// Java 'Color' class takes 3 floats, from 0 to 1.
float r = Rand.nextFloat();
float g = Rand.nextFloat();
float b = Rand.nextFloat();

次に、最終的に色を作成するには、原色をコンストラクタに渡します。

Color randomColor = new Color(r, g, b);

この方法を使用して、特定の色を強調したランダムカラーを作成するなど、さまざまなランダムエフェクトを作成することもできます。緑と青を少なくして、「ピンクの」ランダムカラーを生成します。

// Will produce a random colour with more red in it (usually "pink-ish")
float r = Rand.nextFloat();
float g = Rand.nextFloat() / 2f;
float b = Rand.nextFloat() / 2f;

または、「明るい」色のみが生成されるようにするために、各色要素が常に0.5を超える色を生成できます。

// Will produce only bright / light colours:
float r = Rand.nextFloat() / 2f + 0.5;
float g = Rand.nextFloat() / 2f + 0.5;
float b = Rand.nextFloat() / 2f + 0.5;

色を明るくするなど、Colorクラスで使用できる他のさまざまな色関数があります。

randomColor.brighter();

Colorクラスの概要については、こちらをご覧ください。 http://download.Oracle.com/javase/6/docs/api/Java/awt/Color.html

103
Greg

ランダムなRGB値のワンライナー:

new Color((int)(Math.random() * 0x1000000))
34
Boann

心地よいパステルカラーが必要な場合は、HLSシステムを使用することをお勧めします。

final float hue = random.nextFloat();
// Saturation between 0.1 and 0.3
final float saturation = (random.nextInt(2000) + 1000) / 10000f;
final float luminance = 0.9f;
final Color color = Color.getHSBColor(hue, saturation, luminance);
30
Sualeh Fatehi

これをコピーして、明るいパステル調の虹色に貼り付けます

int R = (int)(Math.random()*256);
int G = (int)(Math.random()*256);
int B= (int)(Math.random()*256);
Color color = new Color(R, G, B); //random color, but can be bright or dull

//to get Rainbow, pastel colors
Random random = new Random();
final float hue = random.nextFloat();
final float saturation = 0.9f;//1.0 for brilliant, 0.0 for dull
final float luminance = 1.0f; //1.0 for brighter, 0.0 for black
color = Color.getHSBColor(hue, saturation, luminance);
17
Komplot

恐ろしく見えたくない場合は、配列内の色のリストを定義し、乱数ジェネレーターを使用して選択することをお勧めします。

本当にランダムな色が必要な場合は、0から255までの3つの乱数を生成し、Color(int、int、int)コンストラクターを使用して新しいColorインスタンスを作成できます。

Random randomGenerator = new Random();
int red = randomGenerator.nextInt(256);
int green = randomGenerator.nextInt(256);
int blue = randomGenerator.nextInt(256);

Color randomColour = new Color(red,green,blue);

私はこの答えに少し遅れていることを知っていますが、他の誰かがこれを言ったのを見たことはありません。

Gregが言ったように、Randomクラスを使用したい

Random Rand = new Random();

しかし、私が言うつもりの違いは、これを行うだけです:

Color color = new Color(Rand.nextInt(0xFFFFFF));

そして、それはそれと同じくらい簡単です!多くの異なるフロートを生成する必要はありません。

5
Shaun Wild
import Android.graphics.Color;

import Java.util.Random;

public class ColorDiagram {
    // Member variables (properties about the object)
    public String[] mColors = {
            "#39add1", // light blue
            "#3079ab", // dark blue
            "#c25975", // mauve
            "#e15258", // red
            "#f9845b", // orange
            "#838cc7", // lavender
            "#7d669e", // purple
            "#53bbb4", // aqua
            "#51b46d", // green
            "#e0ab18", // mustard
            "#637a91", // dark gray
            "#f092b0", // pink
            "#b7c0c7"  // light gray
    };

    // Method (abilities: things the object can do)
    public int getColor() {
        String color = "";

        // Randomly select a fact
        Random randomGenerator = new Random(); // Construct a new Random number generator
        int randomNumber = randomGenerator.nextInt(mColors.length);

        color = mColors[randomNumber];
        int colorAsInt = Color.parseColor(color);

        return colorAsInt;
    }
}
4
Durul Dalkanat

このシンプルで賢い方法を使用して、Javaでランダムな色を作成しました。

Random random = new Random();
        System.out.println(String.format("#%06x", random.nextInt(256*256*256)));

#%06xは、ゼロが埋め込まれた16進数(常に6文字)を提供します。

2
Deepak Kumbhar

あなたは明るいランダムな色が欲しいようです。光の正確な意味がわからない。しかし、ランダムな「虹色」が必要な場合は、これを試してください

Random r = new Random();
Color c = Color.getHSBColor(r.nextFloat(),//random hue, color
                1.0,//full saturation, 1.0 for 'colorful' colors, 0.0 for grey
                1.0 //1.0 for bright, 0.0 for black
                );

詳細については、HSBカラーモデルを検索してください。

1
Ishtar

ランダムな色を取得する方法は次のとおりです。

private static Random sRandom;

public static synchronized int randomColor() {
    if (sRandom == null) {
        sRandom = new Random();
    }
    return 0xff000000 + 256 * 256 * sRandom.nextInt(256) + 256 * sRandom.nextInt(256)
            + sRandom.nextInt(256);
}

利点:

  • Java.awt.ColorまたはAndroid.graphics.Colorで使用できる整数表現を取得します
  • Randomへの静的参照を保持します。
1
Jared Rummler

それぞれ0.0〜1.0の3つのフロート(r、g、b)で色をインスタンス化できます。 http://download.Oracle.com/javase/6/docs/api/Java/awt/Color。 html#Color(float、%20float、%20float )。

JavaのRandomクラスを使用すると、次のような新しいランダムカラーを簡単にインスタンス化できます。

Random r = new Random();
Color randomColor = new Color(r.nextFloat(), r.nextFloat(), r.nextFloat());

私は彼らがすべてきれいになることを保証することはできませんが、それらはランダムになります=)

1
Jason Nichols

承知しました。ランダムなRGB値を使用して色を生成するだけです。好む:

public Color randomColor()
{
  Random random=new Random(); // Probably really put this somewhere where it gets executed only once
  int red=random.nextInt(256);
  int green=random.nextInt(256);
  int blue=random.nextInt(256);
  return new Color(red, green, blue);
}

思いつく色が気に入らない場合は、乱数の生成を変更することができます。これらはかなり暗い傾向があると思います。

1
Jay
package com.adil.util;

/**
* The Class RandomColor.
*
* @author Adil OUIDAD
* @URL : http://kizana.fr
*/
public class RandomColor {      
    /**
    * Gets the random color.
    *
    * @return the random color
    */
    public static String getRandomColor() {
         String[] letters = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
         String color = "#";
         for (int i = 0; i < 6; i++ ) {
            color += letters[(int) Math.round(Math.random() * 15)];
         }
         return color;
    }
}
0
user1942990