Inverser les couleurs opposées
J'ai un utilisateur de l'installation où ils peuvent choisir les couleurs des alertes. l'Alerte est la couleur d'arrière-plan sur un texte ou un bouton. Mais le problème vient que si elles sélectionnez un bleu foncé, et nous avons des lettres noires le contraste n'est pas assez et vous ne pouvez pas le lire.
J'ai essayé de faire une fonction permettant d'obtenir le revers adverse couleur mais havent obtenu trop loin.
Est-il une telle fonction?
source d'informationauteur Mark Worsnop
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé que la meilleure solution pour moi est de convertir les valeurs RVB dans L'espace YIQ valeurs. Comme nous nous intéressons uniquement à la valeur de luminosité (représenté par Y), il existe un seul calcul à faire:
Y = (299*R + 587*G + 114*B)/1000
. Le code Java pour qui ressemblerait à ceci:Vous pouvez voir qu'il décide d'utiliser le noir ou le blanc, en fonction de la luminosité de la couleur d'origine. Et le résultat fonctionne très belle à mon avis. Le poids (299, 587, 114), est proportionnelle à la sensibilité des yeux (ou plutôt la sensibilité de la rétine), de la couleur correspondante.
Utilisation couleur complémentaire:
Algo est simple, il suffit de soustraire chaque composant de la couleur de 255 à obtenir de nouveaux composants de la couleur
----- EDIT (Comme le RVB en fonction de complément peut ne fonctionne pas toujours --------
Ces deux liens sont très utiles et sur le sujet:
http://www.splitbrain.org/blog/2008-09/18-calculating_color_contrast_with_php
http://24ways.org/2010/calculating-color-contrast
Fondée sur les résultats solution que je vous suggère:
Et de plus, j'ai maintenant créé une méthode similaire, pour le calcul d'un arrière-plan par défaut pour une couleur donnée:
entier solution:
Je l'ai eu à travailler, je pense 🙂
Voici la fonction:
Le texte doivent être d'une couleur dérivé de la couleur d'arrière-plan? Que faire si juste alterne entre le blanc et le noir basé sur le r, g, b, de l'intensité? L'idée étant que le blanc sera toujours visible sur r, g, b, valeurs ci-dessous d'une certaine intensité et noir toujours visible sur le reste.
Je n'ai pas de travail algorithme de partager, mais vous pouvez essayer quelque chose le long des lignes de:
Vous aurez probablement à jouer avec seuil un peu pour obtenir quelque chose de bon à la recherche. Vous pouvez aussi la teinte de la police un peu en fonction de r, g, b valeur est dominante.
Vous pouvez calculer la différence entre chaque canal de couleur (rouge, vert et bleu), et d'obtenir la moyenne de la différence - puis faire un peu de la comparaison.