在 Java 中创建随机颜色

Farkhanda Athar 2023年10月12日
在 Java 中创建随机颜色

颜色类用于定义标准 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 乘以该数字,然后再将其转换为十六进制,你将得到六位数字。这意味着你不需要获得六个字符的技巧。你也可以作为子字符串返回(而不是使用循环)。

相关文章 - Java Color