PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Conversion RGB en RGBA
Conversion RGB en RGBA
Iniciado por Frédéric FOURGEOT, 07,ene. 2020 15:07 - 3 respuestas
Miembro registrado
34 mensajes
Publicado el 07,enero 2020 - 15:07
Bonjour,

Je cherche une solution pour convertir une valeur numérique représentative du RGB (ou RVB) et une valeur numérique représentative du RGBA (ou ARGB ou RVBA).

Par exemple la valeur RGB 12648447 devrait me donner -64 en RGBA (je précise que le -64 est obtenu par une application en .NET).

Quelqu'un aurait-il une suggestion ?
Miembro registrado
1.173 mensajes
Publicado el 08,enero 2020 - 09:07
Bonjour,

Ce n'est pas une valeur type RGB mais Hex que vous indiquez ici.
Le RGBa gère la transparence et WinDev a la propriété Opacité.
C'est utilisé en Web avec le CSS.
Quelle votre objectif final?
Miembro registrado
34 mensajes
Publicado el 08,enero 2020 - 10:24
J'ai une table dans laquelle une couleur a été enregistrée via un programme en .NET. Je souhaiterais pouvoir modifier cette couleur depuis une programme WINDEV sans pour autant qu'elle ne soit plus accessible depuis le programme d'origine .NET.

J'ai donc -64 dans un des enregistrement de cette table. J'ai trouvé un code me permettant de transformer cette valeur en 12648447 pour l'afficher sous mon programme WINDEV. Par contre je ne sais pas faire l'inverse si l'utilisateur souhaite modifié la couleur et l'enregistrée dans la base.

J'ai un peu de mal avec les manipulations binaires.

Voici le code que j'utilise pour obtenir les composantes Rouge, Verte et Bleue :
Procedure ConvertirLongRVBAEnRVB(nCouleur est un entier) : entier

nAlpha est un entier = ETBinaire(bitDécaleDroite(nCouleur, 24), 0xff)
nRed est un entier = ETBinaire(bitDécaleDroite(nCouleur, 16), 0xff)
nGreen est un entier = ETBinaire(bitDécaleDroite(nCouleur, 8), 0xff)
nBlue est un entier = ETBinaire(bitDécaleDroite(nCouleur, 0), 0xff)

RENVOYER RVB(nRed, nGreen, nBlue)
Miembro registrado
34 mensajes
Publicado el 08,enero 2020 - 10:30
Ben je suis très bête et finalement je viens de répondre tout seul à ma question...

Il suffit de réaliser l'opération inverse en binaire :

Procedure ConvertirRVBEnLongRVBA(nCouleur est un entier) : entier

nRed est un entier = RVBRouge(nCouleur)
nBlue est un entier = RVBBleu(nCouleur)
nGreen est un entier = RVBVert(nCouleur)
nAlpha est un entier = 255

nCouleurRVBA est un entier = OUBinaire(OUBinaire(OUBinaire(bitDécaleGauche(nAlpha,24), bitDécaleGauche(nRed, 16)), bitDécaleGauche(nGreen, 8)), bitDécaleGauche(nBlue, 0))


RENVOYER nCouleurRVBA