public Color hsv2rgb(Double[] hsv)
{
Color pixel = new Color();
Double T = (hsv[1] / 100) * (hsv[2] / 100); // C
Double t = hsv[2] / 100 - T; // m
Double q = T * (1 - Math.Abs((hsv[0] / 60) % 2 - 1)); // X
Double Rp = 0, Gp = 0, Bp = 0;
if (hsv[0] < 60)
{
Rp = T;
Gp = q;
Bp = 0;
}
else if (hsv[0] < 120)
{
Rp = q;
Gp = T;
Bp = 0;
}
else if (hsv[0] < 180)
{
Rp = 0;
Gp = T;
Bp = q;
}
else if (hsv[0] < 240)
{
Rp = 0;
Gp = q;
Bp = T;
}
else if (hsv[0] < 300)
{
Rp = q;
Gp = 0;
Bp = T;
}
else if (hsv[0] < 360)
{
Rp = T;
Gp = 0;
Bp = q;
}
int R = 0, G = 0, B = 0;
R = (int)((Rp + t) * 255);
G = (int)((Gp + t) * 255);
B = (int)((Bp + t) * 255);
if (R > 255) R = 255;
if (R < 0) R = 0;
if (G > 255) G = 255;
if (G < 0) G = 0;
if (B > 255) B = 255;
if (B < 0) B = 0;
pixel = Color.FromArgb(255, R, G, B);
return pixel;
}