begin process at 2013 05 23 23:11:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > COULEUR HEXADECIMAL

COULEUR HEXADECIMAL


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :couleur, hexadecimal, hexa, hexadécimal Niveau :Débutant Date de création :01/03/2006 Date de mise à jour :02/03/2006 12:07:11 Vu :17 482

Auteur : tmcuh

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

J'avais besoin pour des besoins tiré web d'avoir un système permettant d'encoder et de visualiser dans mon code la couleur "web", elle est représentez sous la forme Hexadécimal ce qui complique un peu plus la chose.
J'ai parcourue le web et c'est sur MSDN que j'ai trouvé la solution, il me semble bon de la présenter ici.

J'ai un champs (C_color) dans une table renseignant la couleur sous la forme 'ff00ff'  qui correspondrait à rose --> rgb(255,0,255)
Pour faire ma conversation j'utilise 3 variables temporaires pour mes 3 couleurs primaire (Rouge Vert Bleu)

Source

  • && Exemple pour transformer l'hexa en decimal
  • lc_colorR = '0x' +SUBSTR(C_Color,1,2)
  • lc_colorG = '0x' +SUBSTR(C_Color,3,2)
  • lc_colorB = '0x' +SUBSTR(C_Color,5,2)
  • monobjet.Backcolor = RGB(&lc_colorR, &lc_colorG, &lc_colorB)
  • myvar = Int2Hex(monobjet.Backcolor) && myvar contient le code hexadécimal sur 6 caractères
  • && fonction pour transformer le décimal en hexa
  • && EXTRAIT DE http://www.news2news.com/vfp/?example=260
  • FUNCTION Int2Hex (num)
  • DECLARE INTEGER wnsprintf IN Shlwapi;
  • STRING @lpOut, INTEGER cchLimitIn,;
  • STRING pszFmt, INTEGER
  • LOCAL lnResult, lcResult
  • lcResult = SPACE(20)
  • lnResult = wnsprintf(@lcResult, 20, "%x", num)
  • RETURN Left(lcResult, lnResult)
  • ENDFUNC
&& Exemple pour transformer l'hexa en decimal
lc_colorR = '0x' +SUBSTR(C_Color,1,2)
lc_colorG = '0x' +SUBSTR(C_Color,3,2)
lc_colorB = '0x' +SUBSTR(C_Color,5,2)

monobjet.Backcolor = RGB(&lc_colorR, &lc_colorG, &lc_colorB)

myvar = Int2Hex(monobjet.Backcolor)     && myvar contient le code hexadécimal sur 6 caractères

&& fonction pour transformer le décimal en hexa
&& EXTRAIT DE http://www.news2news.com/vfp/?example=260
FUNCTION  Int2Hex (num)
    DECLARE INTEGER wnsprintf IN Shlwapi;
        STRING @lpOut, INTEGER cchLimitIn,;
        STRING pszFmt, INTEGER

    LOCAL lnResult, lcResult
    lcResult = SPACE(20)
    lnResult = wnsprintf(@lcResult, 20, "%x", num)
    RETURN Left(lcResult, lnResult)
ENDFUNC



 Historique

01 mars 2006 16:50:40 :
correction
02 mars 2006 12:07:13 :
Ajout de l'integer to hexa

 Sources de la même categorie

RENOMMER LE PRÉFIXE DE TOUS LES FICHIERS D'UN DOSSIER par mike_vk
Source avec Zip ITERATION par DDU de AtoutFox
CRYPTE/DECRYPTE par FredArmoni
CONTRÔLE DU NUMÉRO DE TVA (BELGE) par johnmary
Source avec Zip IMPLÉMENTION EN VISUALFOXPRO DE L'ALGORITHME DE HACHAGE SHA1 par c_chenavier

 Sources en rapport avec celle ci

Source avec une capture UNE GRILLE EN COULEUR EN FONCTION DE TELLE OU TELLE VALEUR ... par aumeric
COMMENT CHANGER LA COULEUR DE FOND D'UN BOUTON DE COMMANDE (... par Mike Gagnon

Commentaires et avis

Commentaire de FrancisFaure le 10/05/2006 15:23:46

Puis je te proposer une version sans l'appel api :

* Code hexa en décimal
C_color = "FF00FF"
r = evaluate("0x"+substr(c_Color,1,2))
v = evaluate("0x"+substr(c_Color,3,2))
b = evaluate("0x"+substr(c_Color,5,2))
? r,v,b

* code décimal en hexa :
? right(TRANSFORM(r*256^2 + v*256 + b, "@0"),6)

Cordialement
Francis

Commentaire de tmcuh le 18/05/2006 16:02:35

Merci pour cette proposition mais en testant celà pose un problème :

c_color = "D1010E"
r = evaluate("0x"+substr(c_Color,1,2))
g = evaluate("0x"+substr(c_Color,3,2))
b = evaluate("0x"+substr(c_Color,5,2))
_screen.backcolor = RGB(r,g,b) && le fond est rouge comme la valeur de départ le désigne
? right(TRANSFORM(_screen.BackColor, "@0"),6)  && la couleur renvoyé correspond à du bleu

Il affiche 0E01D1 ... Une propostion?

Commentaire de FrancisFaure le 18/05/2006 19:18:24

Bonjour,
Ton erreur repose sur le fait que tu considére que le nombre retourné par la fonction RGB() est un nombre qui correspondrait, une fois converti en hexa, a 3 octets dans l'ordre RGB,
or c'est l'inverse le poids fort c'est le B, donc BGR...
si tu veux transformer la valeur de RGB() en hexa RGB il te faut inverser les poids avant.

essayer avec cette fonction (surement optimisable :)


FUNCTION RBG_to_Hexa(licolor as Integer) as Integer
LOCAL lbR as Byte
LOCAL lbG as Byte
LOCAL lbB as Byte
  lbB = INT(licolor/256^2)
  licolor = licolor-lbB*256^2
  lbV = INT(licolor/256)
  licolor = licolor-lbV*256
  lbR = licolor
RETURN RIGHT(TRANSFORM(lbR*256^2+lbV*256+lbB, "@0"),6)

Commentaire de FrancisFaure le 18/05/2006 19:19:33

Rectification dans la déclaration :
FUNCTION RBG_to_Hexa(licolor as Integer) as string

Commentaire de FrancisFaure le 18/05/2006 19:26:58

autre solution :p

FUNCTION RGB_to_Hexa(licolor as Integer) as string
LOCAL lcHexa
  lcHexa = RIGHT(TRANSFORM(licolor , "@0"),6)
RETURN SUBSTR(lcHexa,5,2) + SUBSTR(lcHexa,3,2) + SUBSTR(lcHexa,1,2)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

couleur dans une listview [ par didikiki ] Bonjour,Je travaille sous foxpro9 et je voudrais modifier la couleur du texte dans certaine colonne  d'une listviewmerci d'avance, Changer la couleur de fond d'un message Box [ par avelone ] Comment je peux faire pour changer le backcolor d'un message box ???MerciAvelone pageframe couleur de fond [ par panterga ] BonjourJ'ai un problème de couleur avec les pageframe.  Quand le PC (sous XP ou VISTA) est mode NON classique (Thème)  par exemple XP modifié   je n'o Lisbox choisir une ligne et lui changer la couleur [ par depanico13 ] Bonjour, Voici j'ai un problème avec le listbox. J'ai une liste de prix rempli par un array et je voudrais que la ligne soit rouge si le montant est


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,028 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales