Tout le monde le sait, sous .NET les couleurs sont gérées par la structure System.Drawing.Color . Celle-ci représente une couleur dans le domaine classique RVB (Rouge, Vert, Bleu). On peut très facilement passer dans le domaine TSL (Teinte, Saturation, Luminosité) via les méthodes GetHue(), GetSaturation() et GetBrightness().
L’inverse n’est pas possible, car il n’existe aucune méthode sous .NET permettant la conversion d’une couleur TSL en RVB.
Je vous propose donc une structure que j’ai développé moi-même, qui permet de gérer une couleur TSL et la conversion vers ou depuis une couleur RVB.
Les points forts de cette structure sont les suivants :
- C’est une structure (comme la classe Color), elle se manipule donc par valeur.
- Contrairement à tous les algorithmes que l’on retrouve sur le net qui manipule des flottants pour les conversions, cette structure utilise à 100% des entiers. Les performances sont donc garanties…
- Si cette classe est compilée avec le .NET Framework 3.5, une méthode d’extension peut être ajoutée afin de disposer d’une méthode de conversion dans la classe Color.
Un exemple d’utilisation (qui me sert de test) est fourni dans les projets. Le code de cette classe (et les exemples) sont disponibles sous C# et VB .NET.
Bien évidemment, j’attends vos critiques et menaces de mort concernant cette structure.
Téléchargements :