Here you can find the source of makeRandomColor(Color color, Color darkestColor, int maxAttempts)
Parameter | Description |
---|---|
color | the color to generate a random color from. If null, the color white (0x000000aa) is used. |
darkestColor | the darkest color allowed. If any of the generated color's components are less than the corresponding component in this color, new colors are generated until one satisfies this requirement, up to the specified maximum number of attempts. |
maxAttempts | the maximum number of attempts to create a color lighter than the specified darkestColor. If this limit is reached, the last color generated is returned. |
public static Color makeRandomColor(Color color, Color darkestColor, int maxAttempts)
//package com.java2s; import java.awt.Color; public class Main { /**//from w w w. ja v a2 s . c om * Generates a random {@link Color} by scaling each of the red, green and * blue components of a specified color with independent random numbers. The * alpha component is not scaled and is copied to the new color. The * returned color can be any value between white (0x000000aa) and black * (0xffffffaa). * <p/> * Unless there's a reason to use a specific input color, the best color to * use is white. * * @param color * the color to generate a random color from. If null, the color * white (0x000000aa) is used. * * @return a new color with random red, green and blue components. */ public static Color makeRandomColor(Color color) { if (color == null) { color = Color.WHITE; } float[] cc = color.getRGBComponents(null); return new Color(cc[0] * (float) Math.random(), cc[1] * (float) Math.random(), cc[2] * (float) Math.random(), cc[3]); } /** * Generates a random {@link Color} by scaling each of the red, green and * blue components of a specified color with independent random numbers. The * alpha component is not scaled and is copied to the new color. The * returned color can be any value between white (0x000000aa) and a * specified darkest color. * <p/> * Unless there's a reason to use a specific input color, the best color to * use is white. * * @param color * the color to generate a random color from. If null, the color * white (0x000000aa) is used. * @param darkestColor * the darkest color allowed. If any of the generated color's * components are less than the corresponding component in this * color, new colors are generated until one satisfies this * requirement, up to the specified maximum number of attempts. * @param maxAttempts * the maximum number of attempts to create a color lighter than * the specified darkestColor. If this limit is reached, the last * color generated is returned. * * @return a new color with random red, green and blue components. */ public static Color makeRandomColor(Color color, Color darkestColor, int maxAttempts) { Color randomColor = makeRandomColor(color); if (darkestColor == null) { return randomColor; } float[] dc = darkestColor.getRGBComponents(null); float[] rc = randomColor.getRGBComponents(null); for (int i = 0; i < (maxAttempts - 1) && (rc[0] < dc[0] || rc[1] < dc[1] || rc[2] < dc[2]); i++) { rc = randomColor.getRGBComponents(null); } return randomColor; } }