Conversion RGBA vers HEX
Étiquetté : Bulles carte powerbi
-
Conversion RGBA vers HEX
Posté par StevannS sur 31 mars 2023 à 10h15Bonjour, pour assurer la conversion j’utilise un bouton dans lequel je paramètre la fonction onselect comme suit :
Set(varColor; RGBA(127; 178; 57; 1));;Set(varHexColor;JSON(varColor))
Mais lorsque je remplace RGBA(127; 178; 57; 1) par un TextInput5.Text, la conversion ne marche plus ? Merci de votre aide.
PostID=OLRuh9zj5RYJEoy
StevannS a répondu Il y a 11 mois, 4 semaines 1 Membre · 12 Réponses -
12 Réponses
-
Bonjour
Trois questions :-
Quelle est l’erreur exacte ?
-
Que mets-tu dans ton TextInput ? La propriété TextInput.Text retourne une chaîne, donc aucun soucis pour convertir ça en JSON. Par contre si tu mets “RGBA(127; 178; 57; 1)” (qui retourne une couleur), PA va râler.
-
Utilises-tu varColor à un autre endroit ? Si tu l’utilises ailleurs comme une couleur, tu vas te retrouver avec une incompatibilité de type (couleur d’un coté, chaîne de l’autre).
Yvan
CommentID=sduRpTiOU4m6WZS, PostID=OLRuh9zj5RYJEoy
-
-
en fait PA ne m’indique pas d’erreur…
Dans le 1er cas, le résultat est #7fb239 (donc bon) alors que dans le 2nd cas le résultat est “RGBA(127; 178; 57; 1)”. Et oui, j’entre RGBA(127; 178; 57; 1) dans mon textinput. Je n’utilise pas varcolor ailleurs.CommentID=KRja4grQxgVnw7f, PostID=OLRuh9zj5RYJEoy
-
Si je comprends bien, tu voudrais que PA te donne le résultat de la fonction que tu as saisis en texte, en l’occurrence qu’il te donne le résultat de RGBA(…).
A ma connaissance, cela n’est pas possible car il n’existe pas de fonction EVALUATE ou assimilé (au passage, ce type de fonction est considéré comme dangereux en terme de sécurité).Par contre, si tu donnes les 4 paramètres dans des TextInput (ou des curseurs) différents, cela fonctionne.
Set(varColor; RGBA(txtRouge.Text; txtVert.Text; … ))CommentID=zCFkpcnYiNjUmk5, PostID=OLRuh9zj5RYJEoy
-
Merci je vais essayer.
CommentID=Yd4GL7jbSTuyzSH, PostID=OLRuh9zj5RYJEoy
-
Hello StevannS,
Quand tu dois travailler avec des couleurs dans Power Apps et que tu as une étape où tu doit stocker les valeurs de couleur au format texte, il faut le faire exclusivement au format hexa, plusieurs exemples où l’utilisation des couleurs en hexa simplifie les choses :
-
Quand on souhaite enregistrer une couleur dans une source de données
-
Quand on doit utiliser des couleurs dans du code html dans l’appli
Il est facile de convertir une valeur hexa “texte” en valeur de couleur RGBA utilisée par les contrôles power automate :
ColorValue(“#66bb6eff”) sera interprété dans un paramètre où une couleur est attendue comme RGBA(102,182,227,1)
Par contre c’est beaucoup plus compliqué de transformer une chaîne de texte : “RGBA(102,182,227,1)” en une valeur couleur, car techniquement cela reviendrait à stocker une formule au format texte : Comme dit par ypicot, ce n’est pas possible dans power apps.
Pour ce qui est de stocker un thème de couleurs dans une variable, cette structure peut être intéressante :
Set(n vTheme,n {n Couleur01: {n HEX: "#66bb6eff",n RGB: ColorValue("#66bb6eff")n },n Couleur02: {n HEX: "#7fb239ff",n RGB: ColorValue("#7fb239ff")n },n Couleur03: {n HEX: "#dd4f0eff",n RGB: ColorValue("#dd4f0eff")n },n Couleur04: {n HEX: "#647684ff",n RGB: ColorValue("#647684ff")n },n Couleur05: {n HEX: "#6d31a2ff",n RGB: ColorValue("#6d31a2ff")n }n }n)
Cela permet ensuite d’appeler les valeurs en fonction du besoin :
vTheme.Couleur01.HEX
vTheme.Couleur02.RGB
CommentID=8l76TaGKbSxrIh4, PostID=OLRuh9zj5RYJEoy
-
-
Voici la formule pour convertir les valeurs RGBA qui se trouvent dans 4 text input numériques txtRedValue, txtGreenValue, txtBlueValue (contenant des valeurs de 0 à 255) et txtAlphaValue (contenant une valeur décimale entre 0 et 1) en une chaîne de couleur hexa au format rrggbbaa :
With(n {AlphaNum: "0123456789ABCDEF"};n Mid(n AlphaNum;n 1 + (txtRedValue.Text - Mod(n txtRedValue.Text;n 16n )) / 16;n 1n ) & Mid(n AlphaNum;n 1 + Mod(n txtRedValue.Text;n 16n );n 1n ) & Mid(n AlphaNum;n 1 + (txtGreenValue.Text - Mod(n txtGreenValue.Text;n 16n )) / 16;n 1n ) & Mid(n AlphaNum;n 1 + Mod(n txtGreenValue.Text;n 16n );n 1n ) & Mid(n AlphaNum;n 1 + (txtBlueValue.Text - Mod(n txtBlueValue.Text;n 16n )) / 16;n 1n ) & Mid(n AlphaNum;n 1 + Mod(n txtBlueValue.Text;n 16n );n 1n ) & Mid(n AlphaNum;n 1 + (Round(n txtAlphaValue.Text * 255;n 0n ) - Mod(n Round(n txtAlphaValue.Text * 255;n 0n );n 16n )) / 16;n 1n ) & Mid(n AlphaNum;n 1 + Mod(n Round(n txtAlphaValue.Text * 255;n 0n );n 16n );n 1n )n)
Exemple, si :
-
txtRedValue = 252
-
txtRedValue = 192
-
txtRedValue = 28
-
txtAlphaValue = 0,71
Alors le résultat est : FCC01CB5.
C’est comme ça que j’ai géré la conversion dans mon composant UltimateColorPicker :
CommentID=T9rFhQGtdWBDofz, PostID=OLRuh9zj5RYJEoy
-
Si je trouve le temps, je la simplifierai bien avec les fonctions Dec2Hex() et Hex2Dec()
qui sont toujours pas dans la doc
SubCommentID=8Rr9twPEH2tOSVA, CommentID=T9rFhQGtdWBDofz, PostID=OLRuh9zj5RYJEoy
-
Je verrais bien qque chose comme
Dec2Hex(txtRedValue.Text; 2) &
Dec2Hex(txtGreenValue.Text; 2) &
Dec2Hex(txtBlueValue.Text; 2) &
Dec2Hex(txtAlphaValue.Text * 255; 2)Le premier argument étant (sans surprise) la valeur à convertir, le deuxième la taille de la chaine si besoin de remplissage (la valeur “10” étant convertie en “0A”)
SubCommentID=VgNp2lpOhJIu3O8, CommentID=T9rFhQGtdWBDofz, PostID=OLRuh9zj5RYJEoy
-
Oui tout simplement 🙂 ne pas oublier le # devant 🙂
SubCommentID=t6bHhRRZT6zvwSu, CommentID=T9rFhQGtdWBDofz, PostID=OLRuh9zj5RYJEoy
-
-
Merci à vous 3.
Après test, le code d’Ypicot laisse le dernier terme (transparence) en chiffre et non en lettre (contrairement au code de R3dKap). Je vais donc adopter ce dernier. Merci encore !
CommentID=mOfgacrlt2KmAiP, PostID=OLRuh9zj5RYJEoy
-
Heuuu…. Je viens de (re)faire le test, la transparence apparait bien en lettre (sauf si tu mets une valeur telle que “0,27”, ce qui correspond à “44” en hexa).
Pourrais-tu me donner un cas où cela ne fonctionne pas correctement ?
CommentID=wbNso4rjhfAUnKV, PostID=OLRuh9zj5RYJEoy
-
Hello ! je viens de retester ta formule… et tout ok de mon côté… J’ai dû faire une mauvaise manip la 1ère fois. Désolé ! Merci d’être revenu sur ce post, et mon erreur…
CommentID=fehhv4OpK3a9kZ9, PostID=OLRuh9zj5RYJEoy
Connectez-vous pour répondre.