对着网上公式敲的(有些颜色有误差)
private void hslToRgb(double h, double s, double l, int address) {
double R, G, B;
double var_1, var_2;
if (s == 0) {
R = l * 255.0; //RGB results = 0 ÷ 255
G = l * 255.0;
B = l * 255.0;
} else {
if (l < 0.5) {
var_2 = l * (1 + s);
} else {
var_2 = (l + s) - (s * l);
}
var_1 = 2.0 * l - var_2;
R = 255.0 * Hue2RGB(var_1, var_2, h + (1.0 / 3.0));
G = 255.0 * Hue2RGB(var_1, var_2, h);
B = 255.0 * Hue2RGB(var_1, var_2, h - (1.0 / 3.0));
}
}
private double Hue2RGB(double v1, double v2, double vH) {
if (vH < 0) vH += 1;
if (vH > 1) vH -= 1;
if (6.0 * vH < 1) return v1 + (v2 - v1) * 6.0 * vH;
if (2.0 * vH < 1) return v2;
if (3.0 * vH < 2) return v1 + (v2 - v1) * ((2.0 / 3.0) - vH) * 6.0;
return (v1);
}