2010-02-16 2 views
5

Il y a quelques années, dans ma copie perdue du livre de programmation Windows 3.0 de Charles Petzold, il y avait une valeur magique COLORREF ou RVB documentée que vous pourriez utiliser pour vérifier si vous devrait dessiner le texte dans une couleur claire ou une couleur foncée. Par exemple. Si la couleur d'arrière-plan était inférieure à cette valeur, utilisez du texte noir, s'il était plus haut, utilisez du texte blanc. Est-ce que quelqu'un sait/se souvenir de ce qu'est cette valeur magique?Valeur magique COLORREF/RVB pour déterminer quand utiliser le texte clair/foncé

+0

Comment définir "ci-dessous" et "ci-dessus" sur deux valeurs RVB? Utilisez-vous seulement les niveaux de gris? – suszterpatt

+0

Il semble que la conversion en HSL soit un meilleur pari, et vous pouvez ensuite vérifier en fonction du composant L (ou éventuellement S). –

+0

Je suis sûr que si vous regardez les valeurs RVB eux-mêmes, vous seriez capable de calibrer la tolérance. Cela semble très intéressant cependant! – Layke

Répondre

7

Je ne peux pas parler de COLORREF mais j'ai obtenu de bons résultats en utilisant le luminance comme seuil:

 Y= 0.3 * R + 0.59 * G + 0.11 * B 

avec des couleurs exprimée en valeur décimale entre 0,0 et 1,0.

Si Y> = 0,5 j'ai considéré l'arrière-plan "lumière" (et utilisé le texte foncé), si Y < 0,5 j'ai fait le contraire.

Je me souviens aussi utilisé d'autres formules dont la moyenne simple:

 L = (R+G+B)/3 

mais je ne l'ai pas aimé le résultat. Il me semble logique que le vert contribue à la légèreté plus que le rouge et le rouge plus que le bleu.

+0

Le calcul de la luminance fonctionne parfaitement. Je vais trouver cette valeur magique COLORREF un jour si ... :) – Rob

Questions connexes