java 随机颜色

用HSV模型来实现颜色的随机,然后转为RGB模型

  • 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。
  • 饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。
  • 明度(V),亮度(L),取0-100%。

后两项如果写成固定值的话,那么色调会比较统一,以下为代码

import java.util.Random;

public class RandomColorUtil{
    private static Random random = new Random();
    private float k = random.nextFloat() * 360;

    public static void main(String[] args) {
        RandomColorUtild = new RandomColorUtil();
        for (int i = 0; i < 10; i++) {
            Color c = d.randomColor();
            System.out.println(((int) c.r) + " " + ((int) c.g) + " " + ((int) c.b));
        }
    }

    public Color randomColor() {
        return HSVtoRGB(randomH(), 0.8F, 0.8F);
    }

    private float randomH() {
        k += (1 - 0.618f) * 360;
        if (k > 360)
            k -= 360;
        return k;
    }

    private Color HSVtoRGB(float h, float s, float v) {
        float f, p, q, t;
        if (s == 0) {
            return makeColor(v, v, v);
        }

        h /= 60;
        int i = (int) Math.floor(h);
        f = h - i;
        p = v * (1 - s);
        q = v * (1 - s * f);
        t = v * (1 - s * (1 - f));
        switch (i) {
        case 0:
            return makeColor(v, t, p);
        case 1:
            return makeColor(q, v, p);
        case 2:
            return makeColor(p, v, t);
        case 3:
            return makeColor(p, q, v);
        case 4:
            return makeColor(t, p, v);
        default:
            return makeColor(v, p, q);
        }
    }

    private Color makeColor(float r, float g, float b) {
        return new Color(r, g, b);
    }

    class Color {
        float r, g, b;

        public Color(float r, float g, float b) {
            super();
            this.r = r * 256;
            this.g = g * 256;
            this.b = b * 256;
        }

        public Color() {
            super();
        }

        public float getR() {
            return r;
        }

        public void setR(float r) {
            this.r = r;
        }

        public float getG() {
            return g;
        }

        public void setG(float g) {
            this.g = g;
        }

        public float getB() {
            return b;
        }

        public void setB(float b) {
            this.b = b;
        }

    }
}
时间: 2024-12-28 23:52:29

java 随机颜色的相关文章

鼠标点击出现爱心+社会主义价值观+随机颜色的文字+鼠标cursor自定义图片

js动画--鼠标点击出现爱心 只需将如下JS代码放到</body>之前就好了 <script type='text/javascript' src='//api.dujin.org/js/aixintexiao.js'></script> 完整代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <

随机颜色的多种写法

今天给大家讲讲随机颜色怎么来实现.以下是我的两种方法: 方法一: 十六进制随机颜色:字符串的拼接; js: function ranColor(){ var colors="#"; for(var i=0; i<6;i++){ colors=colors+Math.floor(Math.random()*16).toString(16); } return colors; } var oDiv=document.getElementById('div'); oDiv.style.

java 随机生成一个中文、判断某个string是否是中文以及打印出全部的中文

现在网上大多数用于判断中文字符的是 U+4E00..U+9FA5 这个范围是只是"中日韩统一表意文字"这个区间,但这不是全部,如果要全部包含,则还要他们的扩展集.部首.象形字.注间字母等等; 2E80-A4CF: 包含了中日朝部首补充.康熙部首.表意文字描述符.中日朝符号和标点.日文平假名.日文片假名.注音字母.谚文兼容字母.象形字注释标志.注音字母扩展.中日朝笔画.日文片假名语音扩展.带圈中日朝字母和月份.中日朝兼容.中日朝统一表意文字扩展A.易经六十四卦符号.中日韩统一表意文字.彝

C#取得随机颜色

C#取得随机颜色的方法.分享给大家供大家参考.具体实现方法如下: 复制代码代码如下: public string GetRandomColor(){        Random RandomNum_First = new Random((int)DateTime.Now.Ticks);        //  对于C#的随机数,没什么好说的        System.Threading.Thread.Sleep(RandomNum_First.Next(50));        Random R

JS中取整以及随机颜色问题

前言:感觉自己已经好久好久没有写博客了,最近都是在写在线笔记比较多.现在来到新公司了,昨天刚刚完成一个项目所以今天有空研究研究一下前端方面的技术.下午在看一个游戏代码的时候,发现了几个别人留下的不错的代码小技巧.譬如说取整问题,随机颜色问题.其实这些问题都不大,但是仔细研究一下还是别有洞天,对于提高前端开发方面的理解还是很有帮助的. 取整问题: 1.常规方法: Math.floor(x),返回小于等于x,且最接近x的整数:   Math.floor(1.2);//1 Math.floor(-2.

随机颜色,使程序崩溃提醒

// 随机颜色 - (UIColor*)randomColor { CGFloat r = arc4random() % 256 / 255.0; CGFloat g = arc4random() % 256 / 255.0; CGFloat b = arc4random() % 256 / 255.0; return [UIColor colorWithRed:r green:g blue:b alpha:1]; } 调用:[[self randomColor] set]; 使程序崩溃提醒 i

随机颜色的产生

1.产生随机颜色: -(UIColor *)randomColor{  //产生随机颜色 static BOOL seed = NO; if (!seed) { seed = YES; srandom(time(NULL)); } CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX; CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX; CGFloat blue = (CGFloat)random

随机颜色-js

function ramColor() {            return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).slice(-6);        } 随机颜色-js,布布扣,bubuko.com

echarts之词云随机颜色的配置

echarts中的词云字体产生随机颜色,最主演的是要引入worldcloud.js,另外还要有jquery.js文件与echarts.js文件的引入,通过配置即可实现词云随机颜色的产生.下面为大家介绍两种随机颜色的方法. world.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</tit