Extraction des composantes rvg (rgb pour les anglophones) d'une valeur long

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 981 fois - Téléchargée 29 fois

Contenu du snippet

Après avoir cherché sur plusieurs sites une fonction qui permette d'extraire ces composantes, sans succès, j'ai du prendre le pas sur ma feinéantise et me la faire moi ^_^
Et puisqu'on y est, autant en faire profiter tout le monde !

Source / Exemple :


Public Function ExtractRGB(ByVal RGBColor As Long, ByRef OutRed As Integer, OutGreen As Integer, OutBlue As Integer) As String

  Dim tmpVal As String
  
  ' Pour avoir la couleur en Hexa
  ' et d'etre sur qu'elle soit au format BBVVRR
  ' Et oui, en Hexa, ca apparait à l'envers ...
  tmpVal = Right$("000000" & Hex(RGBColor), 6)
  
  
  ' Recupération des différentes composantes
  ' Conversion en numerique de la composante
  ' la l'ajout du "&H" au début et du "&" à la fin
  ' servent à faire comprendre à la fonction Val que
  ' c'est de l'hexa - Merci JPP
  OutRed = Val("&H" & Right$(tmpVal, 2) & "&")
  OutGreen = Val("&H" & Mid$(tmpVal, 3, 2) & "&")
  OutBlue = Val("&H" & Left$(tmpVal, 2) & "&")
  
  ' Sortie en chaine de caractere, séparateur ","
  ExtractRGB = OutRed & "," & OutGreen & "," & OutBlue
  
End Function

Conclusion :


Grand merci à JPP pour son aide ^_^ sans toi j'aurai bien galéré avec ce Val

A voir également

Ajouter un commentaire Commentaires
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Pour info, une division effectuée avec un antislash est une division entière.....

En faisant cela, on évite une opération de transtypage a VB qui devrait normallement calculer pour passer le résultat en Byte.....
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
Salut tout le monde !

Bonne année 2004 !

Sinon voici une autre optimisation pour le code de MadLucas (j'ai testé avec le Bench de Reinfield et les améliorations sont assez significatives :

au lieu de ce code :

Public Function MadLucas(ByVal LongCol As Long, ByRef R As Byte, ByRef G As Byte, ByRef B As Byte)
R = LongCol Mod 256
G = ((LongCol And &HFF00FF00) / 256&)
B = (LongCol And &HFF0000) / 65536
End Function

Vous mettez ce code :

Public Function MadLucas(ByVal LongCol As Long, ByRef R As Byte, ByRef G As Byte, ByRef B As Byte)
R = LongCol Mod 256
G = ((LongCol And &HFF00FF00) \\ 256&)
B = (LongCol And &HFF0000)\\ 65536
End Function

Et oui juste le sens des slashes qui passent en antislashes

a +
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
lol, l'andouille te remercie.

Je voulais simplement remonter un peu la note de ce source, qui décidement fait parler, malgré sa simplicité et sa mauvaise conception.....
Mais en temps qu'admin, ma note compte differemment, je ne l'ai réalisé que trop tard....

Si tu veux des smileys, j'ai vu passer une source sur le site ou il y a vait un gros zip avec plein de smileys.... au pire, va voir sur IloveMessenger ils doivent bien en avoir, eux....

bonne continuation...
Messages postés
25
Date d'inscription
mercredi 28 mai 2003
Statut
Membre
Dernière intervention
24 septembre 2004

ben oué 5 mn pour ecrire la base... le greetz a jpp c'est pcq je ne savais pas convertir ma chaine str representant un code hexa en valeur entiere.
Je ne comptais certainement pas me la "péter" en écrivant ça... je te conseille de relire le post et surtout le passage "(ok j'avoue, elle suxx vu les autres solutions proposées)" Je constate toutefois que ta réaction montre que tu te permets de juger (à se demander qui fait le beau ...), de travers, une remarque qui portait sur le nombre de posts.
Enfin bon, il n'y a pas débat, je me suis manqué et voilà ^_^
"On apprend toujours de ses erreurs"
Messages postés
200
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
3 août 2004

Fonction faite en 5 mn ? lol pourtant :

1/ Tu dis :

"Grand merci à JPP pour son aide ^_^ sans toi j'aurai bien galéré avec ce Val"

Faudrais savoir, si tu PEINES en vb ou t'es si doué que bon, t'as fais ca en 5 mn, en te levant, apres un week end de fete, lex yeux fermés. De toute maniere si cette fonction "sux" comme tu dis, elle a donc pas sa place dans les sources ici. (ne me presente pas JPP au passage lol).

2/ T'as p'etre 1,00/10 mais bon une andouille (je vois pas d'autre mot vu son acte lol) t'as collé 7,00/10.
Alors, elle est pas belle la vie ?.
;-)

Sinon moi je chercherais un graphiste qui pourrait me faire ou me trouver des smileys genre caramail (32x22 maxi) c'est pour mon client caramail que je developpe, voici qqs screenshots :

http://influenz.free.fr/tr0piiic8.jpg

http://influenz.free.fr/tr0piiic9.jpg

Les screens datent un peu, c'est encore + beau de nos jours (la toolbar etait moche).
;-)
Afficher les 30 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.