|
| Gros bug de la fonction RVB |
| Iniciado por Philippe SB, 10,mar. 2020 17:54 - 4 respuestas |
| |
| | | |
|
| |
Miembro registrado 2.682 mensajes |
|
| Publicado el 10,marzo 2020 - 17:54 |
Bonjour,
Il existe un bug énorme dans la fonction RVB. L'entier renvoyé par cette fonction est totalement faux.
// Selon Windev RVB(255,200,150) = 9 881 855
Or selon l'algo que l'on peut trouver partout sur internet pour différents langages, on devrait trouver 16 763 030
En effet, 255*65536 + 200*256 + 150 = 16 763 030.
D'ailleurs le sélecteur de couleur affiche bien en Hexadécimal : FFC896 et cette valeur correspond bien à 16 763 030 et non à la valeur renvoyée par Windev.
Je m'étais déjà posé cette question lorsque j'avais transformé manuellement des couleurs hexa en rvb et puis comme ça ne donnait jamais ce que je souhaitais, je finissais par les mettre en rvb.
C'est au final extrêmement pénible de devoir jongler avec ces différentes valeurs alors que l'écriture hexa est plus simple.
Bref encore un bug qui a été masqué par la sortie de fonctions type RVBVersHTML afin de retrouver les vraies valeurs RVB.
-- Cordialement,
Philippe SAINT-BERTINMensaje modificado, 10,marzo 2020 - 17:55 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 948 mensajes |
|
| Publicado el 10,marzo 2020 - 18:07 |
Bonjour En effet même en version 20, RVB(255,200,150) = 9 881 855 soit 96C8FF donc la fonction devrait s'appeler BVR() car RVB(150,200,255) renvoie bien 16763030 = FFC896
-- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. Quand un utilisateur vous a aidé, n'oubliez pas de le remercier... |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 948 mensajes |
|
| Publicado el 10,marzo 2020 - 18:25 |
Suite L'aide en ligne est lui aussi buggé : ... <Résultat> = RVB(<Composante rouge> , <Composante verte> , <Composante bleue>) <Résultat> : Entier
Couleur (24 bits) relative aux composantes fournies. Cette couleur est le résultat de la formule suivante : Couleur = 65536 * Composante Bleu + 256 * Composante Verte + Composante Rouge. ... le pire c'est que dLigne(0,0,20,20,RVB(255,0,0),2) trace bien un segment rouge dLigne(0,0,20,20,RVB(0,255,0),2) trace bien un segment vert dLigne(0,0,20,20,RVB(0,0,255),2) trace bien un segment bleu et dLigne(0,0,20,20,RVB(255,200,150),5) trace bien un segment de couleur identique à celle générée par GIMP -- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai. Quand un utilisateur vous a aidé, n'oubliez pas de le remercier...Mensaje modificado, 10,marzo 2020 - 18:35 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 57 mensajes |
|
| Publicado el 11,marzo 2020 - 15:28 |
Bonjour,
Le codage des couleurs dans WINDEV suit la norme Windows sur ce sujet (inversion poids fort et poids faible) :
https://docs.microsoft.com/fr-fr/windows/win32/gdi/colorref
Il n’y a aucune erreur, le codage de la couleur en informatique est réalisé ainsi : Couleur = 65536 * Composante Bleu + 256 * Composante Verte + Composante Rouge
Donc, la commande RVB retourne le bon résultat : (150*65536)+(200*256)+(255) donne bien 9 881 855.
L’affichage de la couleur en Hexadécimal ne représente pas un nombre mais la valeur de chacune des composantes (#FFC896). C’est la notation HTML de la couleur : (FF:250 / C8:200 / 96:150).
-- Loïc HAMEL (Twitter : @HAMELLoic) Support Technique PC SOFT |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 151 mensajes |
|
| Publicado el 13,marzo 2020 - 18:37 |
La version WinDev retourne la bonne valeur à savoir 9881855. Cependant la commande RGB (24-bit) retourne un entier qui ne tient pas compte du canal Alpha (32-bit).
Je vous conseille de passer par une structure COLORBYTES
Exemple struct COLORBYTES { BYTE B; BYTE G; BYTE R; BYTE A; };
et vous pouvez écrire une fonction ARGB comme ceci
FUNCTION ARGB(local A is 1-byte unsigned int, local R is 1-byte unsigned int, local G is 1-byte unsigned int, local B is 1-byte unsigned int) bytestruct is COLOBYTES nRet is unsigned int = 0 bytestruct.A = A bytestruct.R = R bytestruct.G = G bytestruct.B = B transfer (&nRet, &bytestruct, dimension(bytestruct) result nRet
-- Patrice Terrier www.zapsolution.com |
| |
| |
| | | |
|
| | | | |
| | |
|