1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| float luminosite = c.GetBrightness()*100;
float teinte = c.GetHue();
float saturation = c.GetSaturation() * 100;
float tMax = 240;
float lMax = 240;
float sMax = 240;
float VMax = 255;
float M = 0;
float m = 0;
float delta = 0;
float R = 0;
float G = 0;
float B = 0;
float t0 = ((6 * teinte) / tMax);
if (luminosite <= (lMax / 2))
{
M = VMax * (luminosite / lMax) * (1 + (saturation / sMax));
m = VMax * (luminosite / lMax) * (1 - (saturation / sMax));
}
else
{
M = VMax * (((luminosite / lMax) * (1 - (saturation / sMax))) + (saturation / sMax));
m = VMax * (((luminosite / lMax) * (1 + (saturation / sMax))) - (saturation / sMax));
}
delta = M - m;
int i = (Int16)t0;
switch (i)
{
case 0:
R = R;
G = m + (t0 * delta);
B = m;
break;
case 1:
R = m + ((2 - t0) * delta);
G = M;
B = m;
break;
case 2:
R = m;
G = M;
B = m + ((t0 - 2) * delta);
break;
case 3:
R = m;
G = m + ((4 - t0) * delta);
B = M;
break;
case 4:
R = m + ((t0 - 4) * delta); ;
G = m;
B = M;
break;
case 5:
R = M;
G = m;
B = m + ((6 - t0) * delta);
break;
}
Color color = Color.FromArgb((Int16)R, (Int16)G, (Int16)B); |
Partager