2014-07-14 8 views
10

Da quello che ho capito, HSL and HSB colour spaces sono molto simili, entrambi usano la stessa ruota colori 0-360 per la tonalità e lo stesso valore 0-1 per la saturazione. L'unica differenza tra loro è che nel modello HSB si ha luminosità, dove 0 è nero e 1 è il colore a piena intensità, mentre in HSL si ha luminosità/luminosità, dove 0 è ancora nero ma 1 è bianco.La struttura .Net Color utilizza uno spazio colore HSB o HSL?

NET Color struct utilizza lo spazio RGB, ma ha GetHue(), GetSaturation() e GetBrightness() funzioni.

La documentazione è confusa. Per GetBrightness():

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

Ok, quindi ha un senso, Net sembra utilizzare HSB ...

/// <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> 

Er ... in modo che il valore massimo rappresenta bianco, piuttosto che il colore più luminoso. Nonostante il fatto che i loro documenti e denominazione facciano riferimento alla luminosità sono piuttosto sicuro che il valore restituito è in realtà luminosità/luminosità, ovvero .Net utilizza effettivamente il modello HSL e non HSB.

Qualcuno può confermarlo? È un errore nella documentazione, un errore in GetBrightness() o sto fraintendendo la teoria in qualche modo?

risposta

6

La pagina a cui è stato collegato fornisce esempi di L e V (noti anche come B) per una gamma di colori. Confrontando il risultato di Color.FromArgb(255, 255, 0, 0).GetBrightness (0,5) con gli esempi, .NET sta utilizzando il modello HSL. Un assegno di Color.FromArgb(255, 128, 255, 255).GetSaturation (1.0) lo conferma.

Altri hanno scoperto la stessa cosa, ad es. Chris Jackson (MSFT) in Converting from HSB to RGB in .NET: "Il problema di fondo è che .NET Framework si riferisce allo spazio colore come HSB anche se in realtà è HSL. (Il controllo del selettore di colori fa riferimento correttamente.) La struttura del colore nel framework fornisce un metodo GetBrightness(), descritto nella documentazione come, "Ottiene il valore di luminosità hue-saturazione-luminosità (HSB) per questa struttura di colore." È sbagliato? Si scommette. Dovrebbe essere chiamato GetLuminance(). "