|
| Accueil → WINDEV 2025 → [WD16] Calcul d'une couleur de texte par rapport à une couleur de fond |
| [WD16] Calcul d'une couleur de texte par rapport à une couleur de fond |
| Débuté par plec, 01 juin 2011 12:45 - 6 réponses |
| |
| | | |
|
| |
| Posté le 01 juin 2011 - 12:45 |
Dans le planning, j'ai une couleur de fond X pour un rdv. Je souhaiterais déterminer automatiquement par programmation une couleur appropriée pour le texte. Par exemple si le fond est bleu ou rouge la couleur de texte sera blanche si le fond est jaune la couleur du texte sera noire.
D'avance merci à tous ceux qui se pencheront sur ce petit problème |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 67 messages |
|
| Posté le 02 juin 2011 - 00:17 |
Bonjour,
Voici 2 moyens d'obtenir un résultat correct: 1/ avec RVB: je ne connais pas grand chose en colorimétrie, mais "intuitivement" pour chaque composante, j'ai calculé modulo(122+couleur,255). 2/ Avec TSL: en prenant la teinte opposée, ce procédé est plus simple au niveau calcul
Rouge, Vert, Bleu sont des entiers Teinte, nSaturation, nLuminosité sont des entiers InitHasard(Droite(HeureSys(), 2))
Rouge = Hasard(0,255) Vert = Hasard(0,255) Bleu = Hasard(0,255)
SAI_Abcisse = 1234 SAI_Abcisse..CouleurFond = RVB(Rouge,Vert,Bleu) SAI_Abcisse..Couleur = RVB(Modulo(122+Rouge,255),Modulo(122+Vert,255),Modulo(122+Bleu,255))
SAI_SansNom3..CouleurFond = RVB(Rouge,Vert,Bleu) SAI_SansNom4..CouleurFond = RVB(Modulo(122+Rouge,255),Modulo(122+Vert,255),Modulo(122+Bleu,255))
Teinte = CouleurTeinte(RVB(Rouge,Vert,Bleu)) Saturation = CouleurSaturation(RVB(Rouge,Vert,Bleu)) Luminosité = CouleurLuminosité(RVB(Rouge,Vert,Bleu))
SAI_IdPoint = 1234 SAI_IdPoint..CouleurFond = TSL(Teinte,nSaturation,nLuminosité) SAI_IdPoint..Couleur = TSL(Modulo(180+Teinte,360),nSaturation,nLuminosité)
SAI_SansNom1..CouleurFond = TSL(Teinte,nSaturation,nLuminosité) SAI_SansNom2..CouleurFond = TSL(Modulo(180+Teinte,360),nSaturation,nLuminosité) Dans les 2 cas ça marche correctement. A toi de tester
Bon dev, Eric |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 67 messages |
|
| Posté le 02 juin 2011 - 00:21 |
Rectification: Il semble que ça fonctionne mieux en RVB
Eric |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 67 messages |
|
| Posté le 02 juin 2011 - 00:28 |
Voici une troisième solution qui semble encore meilleure: il s'agit d'inverser la luminosité!
Teinte = CouleurTeinte(RVB(Rouge,Vert,Bleu)) nSaturation = CouleurSaturation(RVB(Rouge,Vert,Bleu)) nLuminosité = CouleurLuminosité(RVB(Rouge,Vert,Bleu))
SAI_Abcisse = 1234 SAI_Abcisse..CouleurFond = TSL(Teinte,Saturation,Luminosité) SAI_Abcisse..Couleur = TSL(Teinte,Saturation,Modulo(50+Luminosité,100))
SAI_SansNom3..CouleurFond = TSL(Teinte,Saturation,Luminosité) SAI_SansNom4..CouleurFond = TSL(Teinte,Saturation,Modulo(50+Luminosité,100))
Eric |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 474 messages |
|
| Posté le 14 septembre 2011 - 13:41 |
Merci pour les exemples... J'ai gagné du temps !  |
| |
| |
| | | |
|
| | |
| |
| Posté le 24 mars 2022 - 14:45 |
Bonjour,
Je déterre ce sujet mais la solution ne fonctionne pas ! Exemple : - couleur de fond = 5263440 (c'est un gris/noir) --> Texte en Blanc == OK - couleur de fond = 16711808 (violet plus ou moins foncé) --> Texte en Noir == Pas bon
Avez-vous une solution fiable ? Merci |
| |
| |
| | | |
|
| | |
| |
| Posté le 11 février 2026 - 08:42 |
Salut
cCouleurFond = HTMLVersRVB(UTILISATEUR.Couleur) cCouleurTexte est Couleur = Blanc SI CouleurLuminosité(cCouleurFond) > 75 ALORS cCouleurTexte = GrisFoncé
Simple efficasse. |
| |
| |
| | | |
|
| | | | |
| | |
|