Мне нужно произвольно генерировать цвета в графическом интерфейсе Swing, но проблема в том, что я хочу, чтобы они были только яркими.Как создать случайный яркий цвет?
2
A
ответ
3
Используйте статический метод класса цвета getHSBColor(...)
и убедитесь, что третий параметр, соответствующий яркости, для вас достаточно высок, возможно,> 0.8f (но < 1.0f).
Например, приведенный ниже код использует вышеупомянутый метод, чтобы найти случайный яркий цвет:
float h = random.nextFloat();
float s = random.nextFloat();
float b = MIN_BRIGHTNESS + ((1f - MIN_BRIGHTNESS) * random.nextFloat());
Color c = Color.getHSBColor(h, s, b);
с использованием случайной переменной с именем случайным образом, и значение MIN_BRIGHTNESS из 0.8f:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.*;
public class RandomBrightColors extends JPanel {
private static final int PREF_W = 500;
private static final int PREF_H = PREF_W;
private static final int RECT_W = 30;
private static final int RECT_H = RECT_W;
private static final float MIN_BRIGHTNESS = 0.8f;
private Random random = new Random();
public RandomBrightColors() {
setBackground(Color.BLACK);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (int i = 0; i < 100; i++) {
g.setColor(createRandomBrightColor());
int x = random.nextInt(getWidth() - RECT_W);
int y = random.nextInt(getHeight() - RECT_H);
g.fillRect(x, y, RECT_W, RECT_H);
}
}
private Color createRandomBrightColor() {
float h = random.nextFloat();
float s = random.nextFloat();
float b = MIN_BRIGHTNESS + ((1f - MIN_BRIGHTNESS) * random.nextFloat());
Color c = Color.getHSBColor(h, s, b);
return c;
}
@Override
public Dimension getPreferredSize() {
if (isPreferredSizeSet()) {
return super.getPreferredSize();
}
return new Dimension(PREF_W, PREF_H);
}
private static void createAndShowGui() {
RandomBrightColors mainPanel = new RandomBrightColors();
JFrame frame = new JFrame("RandomBrightColors");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
createAndShowGui();
});
}
}
отредактируйте: или, если вы хотите, чтобы цвета были полностью насыщенными, измените параметр насыщения на 1f:
private Color createRandomBrightColor() {
float h = random.nextFloat();
float s = 1f;
float b = MIN_BRIGHTNESS + ((1f - MIN_BRIGHTNESS) * random.nextFloat());
Color c = Color.getHSBColor(h, s, b);
return c;
}
Также обратите внимание, что это можно сделать, используя цвет RGB с параметром 3 int, но если вы это сделаете, обратите внимание, что один параметр должен быть близок к 255, но должен быть близок к но не ниже 0, а другой может быть случайное что-нибудь между 0 и 255.
Смежные вопросы
- 1. Как создать случайный цвет?
- 2. Создать случайный цвет Java
- 3. Создать случайный цвет пастель
- 4. Как найти яркий цвет изображения?
- 5. Как создать случайный цвет RGBA в CSS?
- 6. сделать более яркий цвет градиента
- 7. Как изменить яркий цвет и форму динамически?
- 8. Как извлечь наиболее яркий цвет из изображения?
- 9. IBM Worklight - Как создать яркий индикатор
- 10. Создать случайный цвет IOS объектив c?
- 11. Случайный цвет svg stroke
- 12. Как создать случайный UIColor?
- 13. Случайный цвет в iOS
- 14. Как получить случайный цвет материала?
- 15. Круг анимации случайный цвет
- 16. Как я могу создать «случайный постоянный цвет» для данной строки?
- 17. Android - Как я могу создать случайный цвет с ограничениями?
- 18. Получить случайный цвет
- 19. PHP случайный цвет выбрать
- 20. Случайный цвет из массива
- 21. Случайный шестнадцатеричный цвет
- 22. Случайный цвет маркера Android
- 23. Случайный цвет нескольким jbuttons
- 24. Случайный цвет в jQuery
- 25. отображает шестнадцатеричный случайный цвет
- 26. Случайный цвет HSV
- 27. память игра случайный цвет
- 28. случайный цвет для UIView
- 29. случайный цвет текста Generat
- 30. Случайный цвет фона
Я думаю, что это сообщение может вам помочь. http://stackoverflow.com/questions/596216/formula-to-determine-brightness-of-rgb-color –
Некоторые [примеры] (http://stackoverflow.com/search?tab=votes&q=user%3a230513%20Color .getHSBColor). – trashgod