private Color getColorFromWaveLength(int Wavelength)
{
double Gamma = 1.00;
int IntensityMax = 255;
double Blue;
double Green;
double Red;
double Factor;
if (Wavelength >= 350 && Wavelength <= 439)
{
Red = -(Wavelength - 440d) / (440d - 350d);
Green = 0.0;
Blue = 1.0;
}
else if (Wavelength >= 440 && Wavelength <= 489)
{
Red = 0.0;
Green = (Wavelength - 440d) / (490d - 440d);
Blue = 1.0;
}
else if (Wavelength >= 490 && Wavelength <= 509)
{
Red = 0.0;
Green = 1.0;
Blue = -(Wavelength - 510d) / (510d - 490d);
}
else if (Wavelength >= 510 && Wavelength <= 579)
{
Red = (Wavelength - 510d) / (580d - 510d);
Green = 1.0;
Blue = 0.0;
}
else if (Wavelength >= 580 && Wavelength <= 644)
{
Red = 1.0;
Green = -(Wavelength - 645d) / (645d - 580d);
Blue = 0.0;
}
else if (Wavelength >= 645 && Wavelength <= 780)
{
Red = 1.0;
Green = 0.0;
Blue = 0.0;
}
else
{
Red = 0.0;
Green = 0.0;
Blue = 0.0;
}
if (Wavelength >= 350 && Wavelength <= 419)
{
Factor = 0.3 + 0.7 * (Wavelength - 350d) / (420d - 350d);
}
else if (Wavelength >= 420 && Wavelength <= 700)
{
Factor = 1.0;
}
else if (Wavelength >= 701 && Wavelength <= 780)
{
Factor = 0.3 + 0.7 * (780d - Wavelength) / (780d - 700d);
}
else
{
Factor = 0.0;
}
int R = this.factorAdjust(Red, Factor, IntensityMax, Gamma);
int G = this.factorAdjust(Green, Factor, IntensityMax, Gamma);
int B = this.factorAdjust(Blue, Factor, IntensityMax, Gamma);
return Color.FromArgb(R, G, B);
}
'프로그래밍 > C#' 카테고리의 다른 글
Pinvokestackimbalance was detected (0) | 2013.06.04 |
---|---|
C# Datagridview Data를 Directx3D로..표현해보았다.. (0) | 2013.04.12 |
C# 이전에 그린 Chart Panel에 XValue YValue 표시하기 (0) | 2013.03.22 |
C# Grid 그리기?...라기보단 차트모양으로 선그리기..^^; (0) | 2013.03.22 |
lock in amplifier 원리 (0) | 2012.07.20 |