Je travaillais à développer une fonctionnalité de calendrier pour un projet. Il s’agissait de mettre en place une grille d’activité sur une plage horaire d’une semaine de travail en utilisant le composant Scheduler de KendoUI. Cette partie s’est super bien déroulée. Comme planifié. Rien à signaler de ce côté.
Or, au moment où je développais mon petit bout de fonctionnalité, la palette de couleur qui permet d’identifier les différents éléments composant le calendrier n’était pas encore établie.
Alors, quoi faire dans ce cas-là? Je suis particulièrement pathétique lorsqu’il est temps de faire usage d’une créativité artistique. Ma solution devait être aussi jetable et de courte durée, car j’allais recevoir la palette de couleur à utiliser en cours d’itération.
Dans ce cas, je me suis dit qu’il fallait avoir recours à System.Drawing.KnownColor afin d’utiliser leur code hexadécimal pour les utiliser en CSS. Qu’est-ce que System.Drawing.KnownColor? Il s’agit d’une énumération qui identifie les couleurs système de Windows. Elles sont laides et peu originales, mais ce sont des couleurs qu’il est possible de référencer avec du code.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var names = (KnownColor[])Enum.GetValues(typeof(KnownColor)); | |
var namesList = names.ToList(); | |
//Retirer ceux que vous considérez indésirables | |
namesList.Remove(KnownColor.White); | |
namesList.Remove(KnownColor.HighlightText); | |
namesList.Remove(KnownColor.ControlLight); | |
namesList.Remove(KnownColor.ControlLightLight); | |
names = namesList | |
.OrderByDescending(p => Guid.NewGuid()) | |
.ToArray(); | |
var randomColorName = names[index]; | |
var randomColor = Color.FromKnownColor(randomColorName); | |
return "#" + randomColor.R.ToString("X2") + randomColor.G.ToString("X2") + randomColor.B.ToString("X2"); |
C’est un peu simplet, mais ça fait le travail, comme on dit. Il est à noter que je procède à un tri en utilisant un GUID unique afin d’obtenir un jeu de couleur différent à chaque utilisation.
Le petit bonus est que la couleur est convertie en son équivalent hexadécimal pouvant être utilisé dans un style CSS (ex.: « #4D5B32 ») grâce à la dernière ligne du code. Il s’agit d’extraire la composante rouge, verte et bleue de la couleur et transformer sa valeur hexadécimale (l’utilisation du motif « X2 » de ToString()).
~~
En cette veille de Noël, je profite de cette occasion pour vous dire merci et vous souhaite tous de passer de joyeuses fêtes! Profitez en bien!
Eh bien, c’est une fonctionnalité du framework intéressante que je ne connaissais pas!
Joyeux Noël FrenchCoding!