Je souhaite afficher pour mon utilisateur le nombre de formulaires (en pourcentage) qui sont conformes à la nouvelle norme. La façon dont je veux leur faire savoir visuellement est le montant en pourcentage qui sera coloré. Ce sera 0xFF0000 (rouge pur) pour 0% et 0x00FF00 (vert pur) à 100%. Quelle est la meilleure façon de calculer la couleur pour chaque étape le long du chemin?Génération du dégradé de couleurs
2
A
Répondre
3
conversion d'espace couleur (comme suggéré par Tony) vous donnera les meilleurs résultats. Si toutefois cela dépasse la portée de ce que vous cherchez, je suggère un algorithme simple qui vous jaune (0xFFFF00) pour 50%:
Pour les valeurs jusqu'à 50% Commencez par 0xFF0000.
Ajouter 0xFF * Pourcentage/50 au composant vert.
Pour les valeurs supérieures à 50% Commencez par 0xFFFF00.
Soustrayez 0xFF * Pourcentage/50 du composant rouge.
Les résultats semblent assez bon pour mes clients ;-)
1
Vous n'avez pas besoin de le calculer vous-même - essayez d'utiliser un pinceau LinearGradient
. (msdn)
LinearGradientBrush linGrBrush = new LinearGradientBrush(
new Point(0, 10),
new Point(200, 10),
Color.FromArgb(255, 255, 0, 0), // Opaque red
Color.FromArgb(255, 0, 0, 255)); // Opaque blue
Pen pen = new Pen(linGrBrush);
e.Graphics.DrawLine(pen, 0, 10, 200, 10);
e.Graphics.FillEllipse(linGrBrush, 0, 30, 200, 100);
e.Graphics.FillRectangle(linGrBrush, 0, 155, 500, 30);
http://stackoverflow.com/questions/668263/algorithm-question-need-to-dynamically-increment-from-00ff00-to-ff0000- over-time/669786 # 669786 –
On peut supposer que la nouvelle norme n'a rien à voir avec l'accessibilité, car certains de vos utilisateurs ne pourront pas faire la différence entre le rouge et le vert. –
Ouais, vert <-> rouge va être difficile pour les personnes atteintes de daltonisme. –