Program Tip

Java에서 임의의 색상을 만드시겠습니까?

programtip 2020. 12. 13. 10:27
반응형

Java에서 임의의 색상을 만드시겠습니까?


Java 응용 프로그램의 JPanel에 임의의 색상 포인트를 그리고 싶습니다. 임의의 색상을 만드는 방법이 있습니까?


임의 라이브러리 사용 :

import java.util.Random;

그런 다음 임의 생성기를 만듭니다.

Random rand = new Random();

색상이 빨간색 녹색과 파란색으로 분리되므로 임의의 기본 색상을 만들어 새로운 임의의 색상을 만들 수 있습니다.

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

그런 다음 마지막으로 색상을 생성하려면 기본 색상을 생성자에 전달합니다.

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

또한이 방법을 사용하여 특정 색상을 더 강조하여 임의의 색상을 만드는 것과 같은 다양한 임의 효과를 만들 수도 있습니다. 녹색과 파란색을 덜 전달하여 "분홍색"임의의 색상을 생성 할 수 있습니다.

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

또는 "밝은"색상 만 생성되도록하려면 항상 각 색상 요소의 0.5보다 큰 색상을 생성 할 수 있습니다.

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

Color색상을 더 밝게 만드는 것과 같이 클래스 와 함께 사용할 수있는 다양한 다른 색상 함수가 있습니다 .

randomColor.brighter();

Color클래스 개요는 http://download.oracle.com/javase/6/docs/api/java/awt/Color.html 에서 확인할 수 있습니다.


임의의 RGB 값에 대한 한 줄짜리 :

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

기분 좋은 파스텔 색상을 원한다면 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);

밝은 파스텔 무지개 색상을 위해 이것을 복사하십시오.

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

끔찍하게 보이지 않게하려면 배열에 색상 목록을 정의한 다음 난수 생성기를 사용하여 하나를 선택하는 것이 좋습니다.

진정으로 임의의 색상을 원하면 0에서 255까지 3 개의 난수를 생성 한 다음 Color (int, int, int) 생성자를 사용하여 새 Color 인스턴스를 만들 수 있습니다.

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

이 답변에 조금 늦었 음을 알고 있지만 다른 사람이 이것을 넣는 것을 보지 못했습니다.

Greg가 말했듯이 Random 클래스를 사용하고 싶습니다.

Random rand = new Random();

하지만 제가 말할 차이점은 간단합니다.

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

그리고 그것은 그렇게 간단합니다! 많은 다른 플로트를 생성 할 필요가 없습니다.


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

Java에서 임의의 색상을 만드는 데 간단하고 영리한 방법을 사용했습니다.

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

여기서 # % 06x 는 0으로 채워진 16 진수 (항상 6 자 길이)를 제공합니다.


각각 0.0에서 1.0 사이의 3 개의 부동 소수점 (r, g, b)으로 색상을 인스턴스화 할 수 있습니다. http://download.oracle.com/javase/6/docs/api/java/awt/Color.html#Color ( float, % 20float, % 20float ).

Java의 Random 클래스를 사용하면 다음과 같이 새로운 임의의 색상을 쉽게 인스턴스화 할 수 있습니다.

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

나는 그들이 모두 예쁘다는 것을 보장 할 수 없지만 무작위 일 것입니다 =)


확실한. 임의의 RGB 값을 사용하여 색상을 생성하십시오. 처럼:

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

You might want to vary up the generation of the random numbers if you don't like the colors it comes up with. I'd guess these will tend to be fairly dark.


You seem to want light random colors. Not sure what you mean exactly with light. But if you want random 'rainbow colors', try this

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

Search for HSB color model for more information.


Here is a method for getting a random color:

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

Benefits:

  • Get the integer representation which can be used with java.awt.Color or android.graphics.Color
  • Keep a static reference to Random.

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

참고URL : https://stackoverflow.com/questions/4246351/creating-random-colour-in-java

반응형