Я хочу нарисовать случайные цветные точки на JPanel в приложении Java. Есть ли способ создания случайных цветов?
Создание случайного цвета в Java?
Ответ 1
Используйте случайную библиотеку:
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;
Или чтобы гарантировать, что генерируются только "светлые" цвета, вы можете создавать цвета, которые всегдa > 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
Ответ 2
Однострочный для случайных значений RGB:
new Color((int)(Math.random() * 0x1000000))
Ответ 3
Если вам нравятся приятные, пастельные цвета, лучше всего использовать систему 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);
Ответ 4
Скопируйте это для ярких пастельных цветов радуги.
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);
Ответ 5
Если вы не хотите, чтобы это выглядело ужасно, я бы предложил определить список цветов в массиве, а затем использовать генератор случайных чисел, чтобы выбрать его.
Если вы хотите действительно случайный цвет, вы можете просто генерировать 3 случайных числа от 0 до 255, а затем использовать конструктор 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);
Ответ 6
Я знаю, что это немного поздно для этого ответа, но я не видел, чтобы кто-то еще это делал.
Как сказал Грег, вы хотите использовать класс Random
Random rand = new Random();
но разница, которую я собираюсь сказать, проста:
Color color = new Color(rand.nextInt(0xFFFFFF));
И это так просто! нет необходимости создавать множество разных поплавков.
Ответ 7
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;
}
}
Ответ 8
Вы можете создать экземпляр цвета с тремя поплавками (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
Конечно. Просто сгенерируйте цвет, используя случайные значения 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
Вам, кажется, нужны светлые случайные цвета. Не уверен, что вы имеете в виду именно со светом. Но если вам нужны случайные "цвета радуги", попробуйте это
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
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;
}
}
Ответ 12
Вот способ получения случайного цвета:
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
.
Ответ 13
Было бы полезно.
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);