public ConvertToRGB ( double hue, double sat, double bri, int &r, int &g, int &b ) : void | ||
hue | double | Grad-Parameter in der HSL-Farb-Skala. 0-0.9999 |
sat | double | Stättigungswert 0-255 |
bri | double | Helligkeit 0-255 |
r | int | Out Variable für Rot-Wert |
g | int | Out Variable für Grün-Wert |
b | int | Out Variable für Blau-Wert |
return | void |
public void ConvertToRGB(double hue, double sat, double bri, out int r, out int g, out int b)
{
double rprime, gprime, bprime;
double chroma = sat * bri;
double hueprime = hue / 6.0;
double x = chroma * (1 - Math.Abs((hueprime % 2) - 1));
int hueprimeround = (int) Math.Floor(hueprime);
switch (hueprimeround)
{
case 0:
rprime = chroma;
gprime = x;
bprime = 0;
break;
case 1:
rprime = x;
gprime = chroma;
bprime = 0;
break;
case 2:
rprime = 0;
gprime = chroma;
bprime = x;
break;
case 3:
rprime = 0;
gprime = x;
bprime = chroma;
break;
case 4:
rprime = x;
gprime = 0;
bprime = chroma;
break;
case 5:
rprime = chroma;
gprime = 0;
bprime = x;
break;
default:
rprime = 0;
gprime = 0;
bprime = 0;
break;
}
double m = bri - chroma;
r = (int) Math.Round((rprime + m) * 255);
g = (int) Math.Round((gprime + m) * 255);
b = (int) Math.Round((bprime + m) * 255);
}
}
public void ConvertToRGBTestGreen() { HSVRGB target = new HSVRGB(); int r, g, b; target.ConvertToRGB(120.0, 1.0, 0.250, out r, out g, out b); Assert.AreEqual(0, r); Assert.AreEqual(127, g); Assert.AreEqual(0, b); }