Quiero dibujar al azar de color de los puntos en un JPanel en una aplicación Java. ¿Hay algún método para crear al azar de los colores?

InformationsquelleAutor Elton.fd | 2010-11-22

13 Comentarios

  1. 103

    El uso de la biblioteca al azar:

    import java.util.Random;

    A continuación, crear un generador de números aleatorios:

    Random rand = new Random();

    Como los colores se dividen en rojo, verde y azul, puede crear un nuevo color al azar mediante la creación aleatoria de colores primarios:

    //Java 'Color' class takes 3 floats, from 0 to 1.
    float r = rand.nextFloat();
    float g = rand.nextFloat();
    float b = rand.nextFloat();

    A continuación, para finalmente crear el color, el pasar de los colores primarios en el constructor:

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

    También puede crear diferentes efectos aleatorios usando este método, tales como la creación aleatoria de colores con más énfasis en ciertos colores … pasar en menos verde y azul para producir un «pinker» un color aleatorio.

    //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;

    O para asegurarse de que sólo «la luz» los colores son generadas, se puede generar colores que son siempre > 0,5 de cada color del elemento:

    //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;

    Hay varias otras de color de funciones que se pueden utilizar con el Color de la clase, tales como hacer el color más brillante:

    randomColor.brighter();

    Una visión general de la Color clase se puede leer aquí: http://download.oracle.com/javase/6/docs/api/java/awt/Color.html

    • su código para que sólo se producen brillante/los colores de la luz no va a funcionar. el próximo flotador no acepta flotar ni doble como argumento y la adición de .5 hace que el color se vaya fuera del alcance.
    • Hacer estos colores se ven bien? ¿Tienes una foto?
    • Se va a producir cualquier y todos los colores. Yo no puedo dibujar que en una imagen. 🙂
    • Como se sugirió anteriormente, no existe un nextFloat constructor que acepta un parámetro.
    • Si quieres una más «púrpura» el tono de los colores de lo que sería el código cambios?
    • Púrpura se compone de azul y rojo, por lo que el aumento de la cantidad de esos dos colores, o la disminución de la cantidad de verde se hacen más tono morado. Espero que esto ayude.

  2. 34

    Un one-liner para el azar valores RGB:

    new Color((int)(Math.random() * 0x1000000))
  3. 30

    Si quieres agradable, los colores pastel, lo mejor es utilizar el sistema 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);
    • ¿Tiene usted una muestra con algunos de los colores que esto genera?
  4. 17

    Copiar y pegar este brillante pastel de arco iris de colores

    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);
    • Funciona muy bien, gracias Komplot!
    • Muy bonito…
    • Yo prefiero de esta manera (HSB) de escoger un color al azar. Utilizando el sistema RGB puede crear muy extrañas combinaciones. Como una nota del lado, el matiz valor internamente se multiplica por 360 para producir el ángulo de tono en el modelo de color HSB (Javadoc).
  5. 9

    Si usted no quiere que se vea horrible, yo sugeriría que la definición de una lista de colores en una matriz y, a continuación, utilizando un generador de números aleatorios para elegir uno.

    Si quieres un verdaderamente aleatorios de color sólo puede generar de 3 números aleatorios de 0 a 255 y, a continuación, utilizar el Color(int,int,int) constructor para crear un nuevo Color a la instancia.

    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);
    • Y de esta manera usted puede evitar fácilmente los puntos que tienen el mismo color que el fondo.
  6. 5

    Sé que es un poco tarde para esta respuesta, pero yo no he visto a nadie poner esto.

    Como Greg dijo, desea utilizar la clase al Azar

    Random rand = new Random();

    pero la diferencia que yo voy a decir que es simple de hacer esto:

    Color color = new Color(rand.nextInt(0xFFFFFF));

    Y es tan simple como eso! no hay necesidad de generar una gran cantidad de diferentes carrozas.

    • Ahh. Es por eso que debo haber acaba de saltar sobre ella. El color extra no va a hacer una diferencia, sin embargo 😛
  7. 4
    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;
        }
    }
    • Gracias, yo sé cómo hacer esto…pero no me apetece y me has salvado de algún tiempo!
  8. 2

    He usado este sencillo y de forma inteligente para la creación de color al azar en Java,

    Random random = new Random();
            System.out.println(String.format("#%06x", random.nextInt(256*256*256)));

    Donde #%06x da cero-collar hexagonal (siempre de 6 caracteres de largo).

  9. 1

    Usted puede crear una instancia de un color con tres carrozas (r, g, b), cada uno de ellos entre 0.0 y 1.0: http://download.oracle.com/javase/6/docs/api/java/awt/Color.html#Color(float,%20float,%20float).

    El uso de Java de la clase al Azar, usted puede fácilmente crear una instancia de un nuevo color al azar como tal:

    Random r = new Random();
    Color randomColor = new Color(r.nextFloat(), r.nextFloat(), r.nextFloat());

    Que no puedo garantizar que van a ser muy, pero que van a ser aleatorio =)

  10. 1

    Seguro. Simplemente generar un color mediante un sistema aleatorio de los valores RGB. Como:

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

    Puede variar hasta la generación de los números aleatorios, si no te gusta los colores que viene con. Me imagino que estos tienden a ser bastante oscuro.

    • Es genial. pero, ¿qué puedo hacer para crear un color más claro?
    • usted puede utilizar el Color.más brillante() método para hacer cualquier color generado aspecto.
    • Sandra, para influir en el brillo, asegúrese de que los valores aleatorios son nunca muy oscuro. 0 es más oscura y 255 es la más brillante, por lo que acaba de hacer una al azar.nextInt(128) + 128 por ejemplo, nunca hasta llegar cualquier colers más oscuro de la mitad de brillo.
    • sí, funciona bien, gracias 🙂
    • Ídem. Yo podría añadir que si quieres más brillo uniforme, puede hacer que la 2ª valor dependen de la 1ª y la 3ª dependiendo de los dos primeros. Como dicen rojo=nextInt(255); verde=nextInt(255-rojo); etc. Se puede jugar con este tipo de cosas, sin cesar, hasta que obtenga los resultados que desea.
    • Hey, quien votada abajo de mí, podría, al menos, publicar un comentario para decir lo que su protesta era. Ah, bueno, mi jefe no revisar mi Stackoverflow puntuación antes de llenar mi cheque de pago, así que no sé por qué me importa.
    • como su respuesta, voy a votar a la u no te preocupes

  11. 1

    Que parece que quieren que la luz de colores aleatorios. No estoy seguro a qué te refieres exactamente con la luz. Pero si quieres random «con los colores del arco iris», tratar este

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

    De búsqueda para el modelo de color HSB para obtener más información.

  12. 1

    Aquí es un método para obtener un color al azar:

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

    Beneficios:

    • Obtener el entero representación que puede ser utilizado con java.awt.Color o android.graphics.Color
    • Mantener una referencia estática a Random.
  13. 0
    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;
        }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here