在Java中创建随机颜色?

时间:2010-11-22 14:22:57

标签: java colors random

我想在Java应用程序中的JPanel上绘制随机彩色点。有没有方法可以创建随机颜色?

14 个答案:

答案 0 :(得分:100)

使用随机库:

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

答案 1 :(得分:34)

随机RGB值的单行:

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

答案 2 :(得分:29)

如果您想要令人愉悦的柔和色彩,最好使用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);

答案 3 :(得分:17)

复制粘贴,以获得明亮柔和的彩虹色

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);

答案 4 :(得分:9)

如果您不希望它看起来很糟糕,我建议在数组中定义一个颜色列表,然后使用随机数生成器来选择一个。

如果你想要一个真正的随机颜色,你可以生成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);

答案 5 :(得分:5)

我知道这个答案有点晚了,但我没有看到其他人这样做。

像Greg所说,你想使用Random类

Random rand = new Random();

但我要说的差别很简单:

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

就这么简单!不需要生成许多不同的花车。

答案 6 :(得分:4)

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;
    }
}

答案 7 :(得分:2)

我使用这种简单而聪明的方式在Java中创建随机颜色

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

#%06x 为您提供零填充十六进制(总是6个字符)。

答案 8 :(得分:1)

您可以使用三个浮点数(r,g,b)实例化颜色,每个浮点数介于0.0和1.0之间: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());

我不能保证他们都会漂亮,但他们会随机=)

答案 9 :(得分:1)

不确定。只需使用随机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);
}

如果您不喜欢随机数字的颜色,您可能想要改变随机数的生成。我猜这些往往会很暗。

答案 10 :(得分:1)

你似乎想要浅色随机颜色。不确定你对光的意思。但如果你想要随机的'彩虹色',试试这个

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颜色模型以获取更多信息。

答案 11 :(得分:1)

以下是获取随机颜色的方法:

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.Colorandroid.graphics.Color
  • 一起使用的整数表示形式
  • 保留对Random
  • 的静态引用

答案 12 :(得分:0)

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;
    }
}

答案 13 :(得分:-1)

这会有所帮助。

Random randomGenerator = new Random();
int red = randomGenerator.nextInt(255);
int green = randomGenerator.nextInt(255);
int blue = randomGenerator.nextInt(255); 
Color randomColour = new Color(red,green,blue);