Tôi muốn vẽ các điểm màu ngẫu nhiên trên một JPanel trong một ứng dụng Java. Có phương pháp nào để tạo màu ngẫu nhiên không?Tạo màu ngẫu nhiên trong Java?
Trả lời
sử dụng thư viện ngẫu nhiên:
import java.util.Random;
Sau đó tạo một máy phát ngẫu nhiên:
Random rand = new Random();
Như màu sắc được tách ra thành màu đỏ màu xanh lá cây và màu xanh, bạn có thể tạo ra một màu sắc ngẫu nhiên mới bằng cách tạo màu cơ bản ngẫu nhiên:
// Java 'Color' class takes 3 floats, from 0 to 1.
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
Sau đó, để cuối cùng tạo ra các màu sắc, vượt qua các màu cơ bản vào constructor:
Color randomColor = new Color(r, g, b);
Bạn cũng có thể tạo các hiệu ứng ngẫu nhiên khác nhau sử dụng phương pháp này, chẳng hạn như tạo màu sắc ngẫu nhiên với sự nhấn mạnh thêm về màu sắc nhất định ... vượt qua trong ít màu xanh lá cây và xanh da trời để tạo ra một "Pinker" ra màu ndom.
// 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;
Hoặc để đảm bảo rằng chỉ màu "ánh sáng" được tạo ra, bạn có thể tạo ra màu sắc mà luôn> 0,5 của mỗi yếu tố màu sắc:
// 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;
Có nhiều chức năng màu khác có thể được sử dụng với lớp Color
, chẳng hạn như làm cho sáng hơn màu:
randomColor.brighter();
Tổng quan về các lớp Color
có thể được đọc ở đây: http://download.oracle.com/javase/6/docs/api/java/awt/Color.html
Nếu bạn không muốn nó trông khủng khiếp, tôi khuyên bạn nên xác định danh sách các màu trong một mảng và sau đó sử dụng trình tạo số ngẫu nhiên để chọn một.
Nếu bạn muốn có màu ngẫu nhiên, bạn có thể tạo 3 số ngẫu nhiên từ 0 đến 255 và sau đó sử dụng hàm tạo Màu (int, int, int) để tạo một thể hiện Màu mới.
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);
Và bằng cách này bạn có thể dễ dàng tránh các điểm có cùng màu với nền. – sje397
Bạn có thể tạo một màu sắc với ba nổi (r, g, b), mỗi giữa 0.0 và 1.0: http://download.oracle.com/javase/6/docs/api/java/awt/Color.html#Color(float,%20float,%20float).
Sử dụng lớp Random Java của bạn có thể dễ dàng tạo một màu sắc ngẫu nhiên mới như vậy:
Random r = new Random();
Color randomColor = new Color(r.nextFloat(), r.nextFloat(), r.nextFloat());
tôi không thể đảm bảo tất cả họ sẽ được khá, nhưng họ sẽ có ngẫu nhiên =)
Chắc chắn. Chỉ cần tạo màu bằng các giá trị RGB ngẫu nhiên. Giống như:
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);
}
Bạn có thể muốn thay đổi số thế hệ ngẫu nhiên nếu bạn không thích màu sắc của nó. Tôi đoán những điều này sẽ có xu hướng khá tối.
Thật tuyệt vời. nhưng, tôi có thể làm gì để tạo màu sáng hơn? –
bạn có thể sử dụng Màu.sáng hơn() phương pháp để làm cho bất kỳ màu sắc tạo ra như thế nào. – Andrew
Sandra, để ảnh hưởng đến độ sáng, đảm bảo các giá trị ngẫu nhiên không bao giờ rất tối. 0 là tối nhất và 255 là sáng nhất, vì vậy chỉ cần làm một random.nextInt (128) + 128 ví dụ để không bao giờ nhận được bất kỳ colers tối hơn một nửa độ sáng. –
Bạn dường như muốn có màu ngẫu nhiên nhẹ. Không chắc chắn về ý nghĩa của bạn với ánh sáng.Nhưng nếu bạn muốn ngẫu nhiên 'màu sắc cầu vồng', hãy thử điều này
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
);
Tìm kiếm mô hình màu HSB để biết thêm thông tin.
Nếu bạn muốn tô màu phấn, tốt nhất là sử dụng hệ thống 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);
Bạn có một mẫu với một số màu sắc này tạo ra không? –
Sao chép dán này cho pastel tươi sáng cầu vồng màu sắc
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);
Hoạt động tốt, cảm ơn Komplot! –
@Komplot: Rất đẹp ... – Mani
Tôi thích cách này (HSB) chọn màu ngẫu nhiên. Sử dụng hệ thống RGB có thể tạo ra các kết hợp rất kỳ lạ. Một lưu ý phụ, giá trị màu được nhân lên 360 để tạo ra góc màu trong mô hình màu HSB (Javadoc). – patrickGranite
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;
}
}
Một one-liner cho các giá trị RGB ngẫu nhiên:
new Color((int)(Math.random() * 0x1000000))
Tôi biết đó là một hơi muộn cho câu trả lời này , nhưng tôi đã không thấy ai khác đặt cái này.
Giống như Greg nói, bạn muốn sử dụng lớp Random
Random rand = new Random();
nhưng sự khác biệt Tôi sẽ nói là đơn giản làm điều này:
Color color = new Color(rand.nextInt(0xFFFFFF));
Và nó đơn giản như vậy! không cần phải tạo ra nhiều phao khác nhau.
Ahh. Đó là lý do tại sao tôi phải bỏ qua nó. Tuy nhiên, màu bổ sung sẽ không tạo ra sự khác biệt: P –
Sẽ rất hữu ích.
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);
Tất cả những gì bạn đã làm là sao chép-dán [câu trả lời khác] (https://stackoverflow.com/a/4246400). – Boann
Tôi đã thử điều này..Đó là công việc ..đó là whay Tôi thích điều này .. –
Ồ tôi hiểu rồi. Đó không phải là những gì chúng tôi làm trên Stack Overflow. Điều cần làm là kiếm 15 đại diện trên trang web (bằng cách đăng câu hỏi và câu trả lời hữu ích mới), vì vậy bạn có thể [bỏ phiếu] (https://stackoverflow.com/help/privileges/vote-up) câu trả lời bạn thấy hữu ích . – Boann
Dưới đây là một phương pháp để có được một màu ngẫu nhiên:
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);
}
Lợi ích:
- Lấy đại diện số nguyên mà có thể được sử dụng với
java.awt.Color
hoặcandroid.graphics.Color
- Giữ một tĩnh tham chiếu đến
Random
.
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;
}
}
Tôi đã sử dụng cách này đơn giản và thông minh để tạo màu sắc ngẫu nhiên trong Java,
Random random = new Random();
System.out.println(String.format("#%06x", random.nextInt(256*256*256)));
đâu #% 06x mang đến cho bạn hex zero-đệm (dài luôn 6 ký tự).
- 1. Cách tạo màu ngẫu nhiên trong matplotlib?
- 2. Tạo các màu ngẫu nhiên (System.Drawing.Color)
- 3. Khởi tạo ngẫu nhiên BitSet trong JAVA
- 4. tạo số ngẫu nhiên ngắn trong java?
- 5. Tạo các từ ngẫu nhiên trong Java?
- 6. Tạo hex màu ngẫu nhiên trong Objective-C?
- 7. Java Tạo số ngẫu nhiên {-1,0,1}
- 8. Tạo chuỗi ngẫu nhiên
- 9. Trình tạo số ngẫu nhiên tạo số nguyên cho Java
- 10. Trình tạo số ngẫu nhiên phân phối ngẫu nhiên
- 11. Java - Dòng ngẫu nhiên đọc
- 12. Hạt giống ngẫu nhiên Math.random trong Java
- 13. Tạo số ngẫu nhiên CUDA
- 14. Tạo số ngẫu nhiên lớn
- 15. Tạo ID ngẫu nhiên nhỏ
- 16. Java 7: ThreadLocalRandom tạo cùng một số ngẫu nhiên
- 17. Ngẫu nhiên trong Jython
- 18. Tạo địa hình ngẫu nhiên
- 19. Tạo câu ngẫu nhiên trong JavaScript
- 20. Tạo số ngẫu nhiên trong C
- 21. Tạo số ngẫu nhiên lognormal trong MATLAB?
- 22. Tạo cùng một chuỗi số ngẫu nhiên
- 23. Tạo số ngẫu nhiên không đồng nhất
- 24. số ngẫu nhiên không quá ngẫu nhiên
- 25. Tại sao không ngẫu nhiên() ngẫu nhiên?
- 26. Tạo ngẫu nhiên Gaussian đôi trong Objective-C/C
- 27. Bộ sưu tập ngẫu nhiên Java
- 28. Cách gán màu ngẫu nhiên cho hiệu ứng di chuột
- 29. 100x100 hình ảnh với màu điểm ảnh ngẫu nhiên
- 30. Tạo một bộ tạo số giả ngẫu nhiên trong C#
mã của bạn cho sẽ chỉ tạo ra màu sáng/ánh sáng sẽ không hoạt động. float tiếp theo không chấp nhận float hoặc double như một đối số và thêm .5 làm cho màu sắc biến mất khỏi phạm vi. – Xitcod13
Những màu này có đẹp không? Bạn có một bức tranh? –
@ThomasAhle Nó sẽ tạo ra mọi màu sắc có thể. Tôi không thể vẽ nó trong một bức tranh. :) – Greg