Zufällige Farben in Java erzeugen
Die Farbklasse wird verwendet, um Farben zu definieren, die sich im Standardfarbraum RGB
befinden, oder Farben in einem beliebigen Farbraum, der durch den Begriff Farbraum definiert wird. Jeder Farbe wird eine implizit auf 1.0 festgelegte Alphazahl sowie ein expliziter Wert zugewiesen, den der Konstruktor angibt. Alphawerte definieren die Transparenz einer Farbe. Er wird als arbiträrer Gleitkommawert im Bereich von 0,0 zwischen 1,0 oder 0 bis 255 dargestellt. Eine Zahl von 1,0 oder 255 zeigt an, dass der Farbton undurchsichtig ist, während die Alpha-Werte von Null oder 0,0 darauf hinweisen, dass er transparent ist.
Wenn Sie eine Farbe mit einem expliziten Alpha erstellen oder die Alpha- und Farbkomponenten der Farbkomponenten erfassen, lassen Sie sich nicht mit einer Alpha-Komponente vormultiplizieren. Der Standardfarbraum bei der Verwendung der 2D(tm) Java API 2D(tm) API ist sRGB, ein vorgeschlagener Standard-RGB-Farbraum.
Wir sollten die random
Bibliothek nutzen.
import java.util.Random;
Erstellen Sie einen Zufallsgenerator.
Random rand = new Random();
Da Farben in Blau, Rot und Grün unterteilt sind, ist es möglich, eine völlig neue Farbe zu erstellen, indem zufällige Primärfarben erstellt werden. Hier akzeptiert die Java-Klasse Color
3 Gleitkommazahlen, beginnend von null bis eins.
float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();
Um die endgültige Farbe zu erstellen, geben Sie die Primärfarben in den Konstruktor ein:
Color randomColor = new Color(r, g, b);
Es ist auch möglich, mit dieser Methode verschiedene zufällige Effekte zu erzeugen, indem zufällige Farben mit einem stärkeren Fokus auf bestimmte Farben erstellt werden. Geben Sie mehr Blau und Grün ein, um eine zufällige Farbe pinker
zu erzeugen. Der folgende Code kann eine zufällige Farbe mit mehr Rot (normalerweise rosa) erzeugen.
float r = rand.nextFloat();
float g = rand.nextFloat() / 2f;
float b = rand.nextFloat() / 2f;
Um sicherzustellen, dass nur helle Farben erzeugt werden, können Sie Farben generieren, die mindestens 0,5 von jedem Element im Farbspektrum haben. Der folgende Code erzeugt nur helle oder helle Schattierungen.
float r = rand.nextFloat() / 2f + 0.5;
float g = rand.nextFloat() / 2f + 0.5;
float b = rand.nextFloat() / 2f + 0.5;
Innerhalb dieser Color
-Klasse können viele weitere Farbfunktionen genutzt werden, beispielsweise um die Farbe heller zu machen.
randomColor.brighter();
Beispielcode
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();
}
}
Einige hilfreiche Tipps für Java-Farben
- Ein seltsamer Ort, um
random()
zu starten. - Dies ist entweder eine generiertecolor()
-Funktion oder in einer statischen Initialisierung. Im Moment ist es etwas seltsam, dass Sie den Zufallsgenerator als Parameter für Ihr Programm hinzufügen müssen. Sie sollten die statische Initialisierung in Betracht ziehen. - Seltsam magische Zahl
16777215
. Wie lautet diese Nummer? Es ist nicht ganz sicher, dass0xFFFFFF
der höchste Farbwert ist. Es ist wichtig zu beachten, dass nextInt(n)
eine ganze Zahl im Bereich zwischen 0 und n liefert; es enthält jedoch nicht die Zahl n. Außerdem müssen Sie0x1000000
verwenden. - Austricksen, um 6 Zeichen zu sein. Wenn Sie
0x1000000
mit der Zahl multiplizieren, bevor Sie sie in Hexadezimal umwandeln, erhalten Sie sechs Stellen. Das bedeutet, dass Sie den Trick nicht benötigen, um sechs Zeichen zu erhalten. Sie können auch als TeilZeichenkette zurückgeben (anstatt eine Schleife zu verwenden)。