在 Java 中建立隨機顏色
Farkhanda Athar
2021年11月18日
顏色類用於定義標準 RGB
顏色空間中的顏色或由術語顏色空間定義的任何顏色空間中的顏色。每種顏色都分配了一個隱式設定為 1.0 的字母數字以及建構函式指定的顯式值。Alpha 值定義顏色的透明度。它表示為介於 1.0 或 0 到 255 之間的 0.0 範圍內的任意浮點數。1.0 或 255 的數字表示色調不透明,而 alpha 值 0 或 0.0 表示它是透明的。
使用顯式 alpha 建立顏色或獲取顏色分量的 alpha 和顏色分量時,不要預先乘以 alpha 分量。使用 2D(tm) Java API 2D(tm) API 的預設顏色空間將是 sRGB,一種建議的標準 RGB 顏色空間。
我們應該使用 random
庫。
import java.util.Random;
建立一個隨機生成器。
Random rand = new Random();
由於顏色分為藍色、紅色和綠色,因此可以通過隨機生成原色來建立全新的顏色。這裡 Java Color
類接受 3 個浮點數,從 0 到 1。
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 個字元。如果在將
0x1000000
乘以該數字,然後再將其轉換為十六進位制,你將得到六位數字。這意味著你不需要獲得六個字元的技巧。你也可以作為子字串返回(而不是使用迴圈)。