根据您在评论中提供的网站(sessions.edu/color-calculator)
您使用了类似的颜色模式:当您转换 rgb 颜色 HSB/HSV 表示时,类似颜色才有意义,我将您重定向到此站点以了解该系统表示颜色的方式http://colorizer.org/。
类似的颜色是一个三元组:leftOne mainOne rightOne
在 HSB 表示中,我定义了这样的主要表示:[H, S, B]
- H 色调是以度为单位的角度
- S 饱和度在 0 和 1 之间浮动
- B 亮度/值在 0 和 1 之间浮动
所以 leftOne 如果定义为:[H - 30, S, B]
而 rightOne 如果定义为:[H + 30, S, B]
在 Java 中,如果您使用 java.awt.color API,则色调是浮动值(介于 0 和 1 之间),因此只需将角度除以 360 ...
这里是如何在 Java 中获得这个结果的片段:
double anglerotation = 1d / 12; // 30 /360
Color mainColor = new Color(174, 235, 18);
float[] hsbLeftColor = Color.RGBtoHSB(mainColor.getRed(), mainColor.getGreen(), mainColor.getBlue(), null);
hsbLeftColor[0] -= anglerotation;
Color leftColor = new Color(Color.HSBtoRGB(hsbLeftColor[0], hsbLeftColor[1], hsbLeftColor[2]));
float[] hsbRightColor = Color.RGBtoHSB(mainColor.getRed(), mainColor.getGreen(), mainColor.getBlue(), null);
hsbRightColor[0] += anglerotation;
Color rightColor = new Color(Color.HSBtoRGB(hsbRightColor[0], hsbRightColor[1], hsbRightColor[2]));