첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.

728x90
반응형
728x170
#region HSL을 RGB로 변환하기 - HSL2RGB(hsl, rgb)

/// <summary>
/// HSL을 RGB로 변환하기
/// </summary>
/// <param name="hsl">HSL</param>
/// <param name="rgb">RGB</param>
public void HSL2RGB(HSL hsl, RGB rgb)
{
    if(hsl.Saturation == 0d)
    {
        rgb.Red = rgb.Green = rgb.Blue = (byte)(hsl.Luminance * 255d);
    }
    else
    {
        double value1;
        double value2;
        double hue = (double)hsl.Hue / 360d;

        value2 = (hsl.Luminance < 0.5d) ? (hsl.Luminance * (1 + hsl.Saturation)) : ((hsl.Luminance + hsl.Saturation) - (hsl.Luminance * hsl.Saturation));
        value1 = 2d * hsl.Luminance - value2;

        rgb.Red   = (byte)(255d * GetValue(value1, value2, hue + (1d / 3d)));
        rgb.Green = (byte)(255d * GetValue(value1, value2, hue));
        rgb.Blue  = (byte)(255d * GetValue(value1, value2, hue - (1d / 3d)));
    }
}

#endregion

※ HSL 구조체 : 'HSL 색상 구조체' 참조

※ RGB 구조체 : 'RGB 색상 구조체' 참조

728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요