Java でランダムな色を作成する
![Java でランダムな色を作成する](/img/Java/feature-image---java-random-color.webp)
色クラスは、標準の RGB
色空間にある色、または色空間という用語で定義されている任意の色空間の色を定義するために使用されます。各色には、コンストラクターが指定する明示的な値だけでなく、暗黙的に 1.0 に設定されるアルファ番号が割り当てられます。アルファ値は、色の透明度を定義します。これは、1.0 または 0 から 255 までの 0.0 の範囲内の任意のフロートとして表されます。1.0 または 255 の数値は色相が不透明であることを示し、ゼロまたは 0.0 のアルファ値は透明であることを示します。
明示的なアルファを使用してカラーを作成する場合、またはカラーコンポーネントのアルファコンポーネントとカラーコンポーネントを取得する場合は、アルファコンポーネントを事前に乗算しないでください。2D(tm)Java API 2D(tm)API を使用するデフォルトの色空間は、提案されている標準 RGB 色空間である sRGB になります。
ランダム
ライブラリを利用する必要があります。
import java.util.Random;
ランダムジェネレーターを作成します。
Random rand = new Random();
色は青、赤、緑に分かれているので、ランダムな原色を作ることで全く新しい色を作ることができます。ここで、Java Color
クラスは、0 から 1 までの 3つの float を受け入れます。
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
最終的な色を作成するには、原色をコンストラクターに入力します。
Color randomColor = new Color(r, g, b);
この方法を使用して、特定の色に重点を置いたランダムな色を作成することにより、さまざまなランダム効果を作成することもできます。より多くの青と緑を渡して、ピンカーのランダムな色を作成します。次のコードは、より赤(通常はピンクがかった色)のランダムな色を作成できます。
float r = rand.nextFloat();
float g = rand.nextFloat() / 2f;
float b = rand.nextFloat() / 2f;
明るい色のみが生成されるようにするために、カラースペクトルの各要素が 0.5 以上の色を生成できます。次のコードは、明るい色合いまたは明るい色合いのみを生成します。
float r = rand.nextFloat() / 2f + 0.5;
float g = rand.nextFloat() / 2f + 0.5;
float b = rand.nextFloat() / 2f + 0.5;
この Color
クラスでは、他の多くの色機能を利用して、色をより明るくすることができます。
randomColor.brighter();
サンプルコード
import java.awt.*;
import javax.swing.*;
class color extends JFrame {
// constructor
color() {
super("color");
Color c = Color.yellow;
JPanel p = new JPanel();
p.setBackground(c);
setSize(200, 200);
add(p);
show();
}
// Main Method
public static void main(String args[]) {
color c = new color();
}
}
Java カラーに関するいくつかの役立つヒント
random()
を開始する奇妙な場所-これは、生成されたcolor()
関数または静的初期化のいずれかで生成されます。現時点では、プログラムのパラメーターとしてランダムジェネレーターを追加する必要があるのは少し奇妙です。静的初期化の使用を検討する必要があります。- 不思議な魔法の番号
16777215
。この番号は何ですか?最高の色の値が0xFFFFFF
であるかどうかは完全には定かではありません。次のInt(n)
は 0 から n の範囲の整数を与えることに注意することが重要です。ただし、数値 n は含まれていません。また、0x1000000
を使用する必要があります。 - 6 文字のように見せかけるように騙します。16 進数に変換する前に
0x1000000
に数値を掛けると、6 桁になります。これは、6 文字を取得するためのトリックを必要としないことを意味します。(ループを使用する代わりに)部分文字列として返すこともできます。