Créer des couleurs aléatoires en Java

Farkhanda Athar 12 octobre 2023
Créer des couleurs aléatoires en Java

La classe de couleur est utilisée pour définir les couleurs qui sont dans l’espace colorimétrique standard RVB ou les couleurs dans tout espace colorimétrique défini par le terme espace colorimétrique. Chaque couleur se voit attribuer un nombre alpha implicitement défini sur 1,0 ainsi qu’une valeur explicite spécifiée par le constructeur. Les valeurs alpha définissent la transparence d’une couleur. Il est représenté comme un flottant arbitraire dans la plage de 0,0 entre 1,0 ou 0 à 255. Un nombre de 1,0 ou 255 indique que la teinte est opaque, tandis que les valeurs alpha de zéro ou 0,0 indiquent qu’elle est transparente.

Lors de la création d’une couleur à l’aide d’un alpha explicite ou lors de l’acquisition des composants alpha et couleur des composants de couleur, ne vous faites pas pré-multiplier par un composant alpha. L’espace colorimétrique par défaut de l’utilisation de l’API Java 2D(tm) API 2D(tm) sera sRGB, un espace colorimétrique RVB standard proposé.

Nous devrions utiliser la bibliothèque random.

import java.util.Random;

Créez un générateur aléatoire.

Random rand = new Random();

Étant donné que les couleurs sont divisées en bleu, rouge et vert, il est possible de créer une toute nouvelle couleur en créant des couleurs primaires aléatoires. Ici, la classe Java Color accepte 3 flottants, de zéro à un.

float r = rand.nextFloat();
float g = rand.nextFloat();
float b = rand.nextFloat();

Pour créer la couleur finale, introduisez les couleurs primaires dans le constructeur :

Color randomColor = new Color(r, g, b);

Il est également possible de créer divers effets aléatoires en utilisant cette méthode en créant des couleurs aléatoires en mettant davantage l’accent sur des couleurs spécifiques. Passez plus de bleu et de vert pour créer une couleur aléatoire plus rose. Le code suivant peut créer une couleur aléatoire avec plus de rouge (généralement rosâtre).

float r = rand.nextFloat();
float g = rand.nextFloat() / 2f;
float b = rand.nextFloat() / 2f;

Pour vous assurer que seules des couleurs claires sont générées, vous pouvez générer des couleurs qui ont au minimum 0,5 de chaque élément dans le spectre de couleurs. Le code suivant ne produira que des nuances claires ou lumineuses.

float r = rand.nextFloat() / 2f + 0.5;
float g = rand.nextFloat() / 2f + 0.5;
float b = rand.nextFloat() / 2f + 0.5;

De nombreuses autres capacités de couleur peuvent être utilisées dans cette classe Color, par exemple, rendant la couleur plus lumineuse.

randomColor.brighter();

Exemple de code

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

Quelques conseils utiles pour les couleurs Java

  • Un endroit étrange pour commencer random() - Il s’agit soit d’une fonction color() générée soit dans une initialisation statique. Pour le moment, il est un peu étrange que vous deviez ajouter le générateur aléatoire en tant que paramètre pour votre programme. Vous devriez envisager d’utiliser l’initialisation statique.
  • Chiffre étrangement magique 16777215. Quel est ce numéro ? Il n’est pas tout à fait certain que ce soit le 0xFFFFFF qui soit la valeur de couleur la plus élevée. Il est important de noter que la prochaine Int(n) donne un entier compris entre 0 et n ; cependant, il n’inclut pas le nombre n. De plus, vous devez utiliser 0x1000000.
  • Tromper en donnant l’impression d’être à 6 caractères. Si vous multipliez 0x1000000 par le nombre avant de le convertir en hexadécimal, vous obtiendrez six chiffres. Cela signifie que vous n’avez pas besoin de l’astuce pour obtenir six caractères. Vous pouvez également retourner sous forme de sous-chaîne (au lieu d’utiliser une boucle)。

Article connexe - Java Color