2014-07-14 2 views
10

제가 이해하기로는 HSL and HSB colour spaces이 매우 비슷합니다. 둘 다 색조에 대해 동일한 0-360 컬러 휠을 사용하고 채도에 대해 동일한 0-1 값을 사용합니다. 그들 사이의 한가지 차이점은 HSB 모델에서 밝기는 0이고 검정은 1이고 색상은 1입니다. HSL에서는 밝기/광도가 있습니다. 0은 여전히 ​​검정이지만 1은 흰색입니다..Net Color 구조체가 HSB 또는 HSL 색 공간을 사용합니까?

구조체는 RGB 공간을 사용하지만 GetHue(), GetSaturation()GetBrightness() 기능이 있습니다.

여기의 설명서는 혼란 스럽습니다. GetBrightness()의 경우 :

/// <summary>Gets the hue-saturation-brightness (HSB) brightness value for this 
/// System.Drawing.Color structure.</summary> 

좋아, 그래서 의미가 닷넷 오히려 밝은 색상보다

/// <returns>The brightness of this System.Drawing.Color. The brightness ranges 
/// from 0.0 through 1.0, where 0.0 represents black and 1.0 represents white. 
/// </returns> 

어이 ... 그래서 최대 값은 흰색 나타냅니다 ... HSB를 사용하는 것으로 나타납니다. 사실 자신들의 문서와 이름이 밝기 인을 일관되게 나타내지 만 반환되는 값은 실제로 밝기/광도입니다. 즉 .Net은 실제로 HSB가 아닌 HSL 모델을 사용합니다.

누구든지 확인할 수 있습니까? 설명서에 오류가 있습니까? GetBrightness()의 오류입니까, 아니면 어떻게 든 이론을 오해하고 있습니까?

답변

6

연결된 페이지에 다양한 색상의 L 및 V (별명 B)의 예가 나와 있습니다. Color.FromArgb(255, 255, 0, 0).GetBrightness (0.5)의 결과를 예제와 비교하면 .NET이 HSL 모델을 사용함을 알 수 있습니다. Color.FromArgb(255, 128, 255, 255).GetSaturation (1.0)의 확인으로 확인됩니다.

다른 사람도 같은 것을 발견했습니다. Chris Jackson (MSFT) Converting from HSB to RGB in .NET : "실제로 근본적인 문제는 .NET Framework에서 실제로 HSL이더라도 색상 공간을 HSB로 참조한다는 것입니다 (색상 선택기 컨트롤이 올바르게 참조 함). 프레임 워크의 색상 구조 문서에서 "이 색상 구조에 대한 채도 - 채도 - 밝기 (HSB) 밝기 값을 가져옵니다."라는 설명의 GetBrightness() 메서드를 제공하며, 잘못된 것인가? GetLuminance()라고해야합니다. "