Page 1 sur 1

Convertir un code couleur vers hexadécimal

Publié : mar. 05/oct./2004 21:27
par Oliv
Comment convertir un code couleur (24bits ou composantes séparées) vers un code couleur héxadécimal (pour une utilisation html) ?
Merci

Publié : mar. 05/oct./2004 21:58
par Chris
Comme ça, par exemple:

Code : Tout sélectionner

;ColorRef  = RGB($FF,$FF,$DF) ; Format du sélecteur de PureBasic 
;ColorRef  = RGB(255,255,223) ; Format normal 
ColorRef  = 14680063 ; Format retourné par certaines applications 

; 
Rouge    = Red(ColorRef)
Vert     = Green(ColorRef)
Bleu     = Blue(ColorRef)

ColHex$   = "#"+RSet(Hex(Rouge),2,"0")+RSet(Hex(Vert),2,"0")+RSet(Hex(Bleu),2,"0")
Debug "Couleur Hexa = " + ColHex$

Debug "----------------"

ResRed    = Int(Red(ColorRef)/51)   : RedWeb = ResRed * 51
ResGreen  = Int(Green(ColorRef)/51) : GreenWeb = ResGreen * 51
ResBlue   = Int(Blue(ColorRef)/51)  : BlueWeb = ResBlue * 51

ColWeb$   = "#"+RSet(Hex(RedWeb),2,"0")+RSet(Hex(GreenWeb),2,"0")+RSet(Hex(BlueWeb),2,"0") 

Debug "Couleur Web (216 couleurs)= " + ColWeb$
PS : Pour la couleur web, je ne suis pas trop sûr, quand même
Re-PS : Je m'étais planté de code : j'ai modifié :oops:

Publié : mer. 06/oct./2004 6:28
par Oliv
Merci :D :D
Pourquoi divises tu par 51 pour remultiplier après ?

Publié : mer. 06/oct./2004 8:23
par Chris
C'est un ancien code, celui que j'avais utilisé pour mon petit prog pour prélever la couleur d'un pixel.
A l'époque, on m'avait déjà posé la question. :lol:

Publié : mer. 06/oct./2004 14:09
par Le Soldat Inconnu
la c'est le mode 216 couleurs mais on peut utiliser toute les couleurs maintenant.

entre le hex de la couleur pure et celui du web, il y a juste une histoire d'ordre
car la couleur hex de pure B G R alors qu'il faut RGB
donc il suffit d'inverser le R et le B et c'est bon

Code : Tout sélectionner

CouleurWeb.s = "#" + Hex(RGB(Bleu, Vert, Rouge))

Publié : mer. 06/oct./2004 14:37
par Oliv
Merci aux deux :D

Publié : mer. 06/oct./2004 15:12
par Oliv
2tant intéressé par le code de Régis car plus cours, jel'ai essayé, mais il y a un petit problème : La commande Hex() vire tous les 0 à gauche donc j'ai mis

Code : Tout sélectionner

Couler.s = Hex(RGB(Blue(Couleur),Green(couleur),Red(Couleur)))
    Select Len(Couler)
      Case 2
        Couler = "0000" + Couler
      Case 3
        Couler = "000" + Couler
      Case 4
        Couler = "00" + Couler
      Case 5
        Couler = "0" + Couler
    EndSelect
Et ça marche, je rajoute encore la gestion des polices et je vous donne mon logiciel pour les emails :D

Publié : mer. 06/oct./2004 20:07
par Le Soldat Inconnu
Essai plutot comme ça, moi aussi je trouve ton code trop long :roll:

Code : Tout sélectionner

 "#" + RSet(Hex(RGB(Bleu, Vert, Rouge)), 6, "0")
Au fait, c'est quoi que tu veux couler ? :mrgreen: