De rgb à r, g et b, la meilleur technique en vb !

Contenu du snippet

Voici, bien humblement, la façon la plus rapide de décomposer une couleur 24-bits en ses composantes colorimétriques (8-bits) sous VB6. Elle allie en réalité les deux façons les plus courantes d'appréhender le problème.
J'ai juste modifié le calcul de la composante colorimétrique bleue qui, habituellement, nous est présenté sous cette forme :
B= (C& And &HFF0000) \ &H10000
et l'ai simplifié sous celle-ci :
B = C& \ &H10000

Pour la compréhension, référez-vous aux trop nombreuses sources déjà présentes à ce sujet sur Codes-Sources et VBFrance.

Tout ce que je peux vous rappeler c'est que :

- "\" est un division ne renvoyant que la sa partie entière (autrement dit, tronquant la partie décimale, le reste de la division... l'inverse du modulo quoi !)

- &Hxxx& sont des nombres sous forme hexadécimale (base 16) dont voici ceux utilisé présentement :
Hexa Dec Bin R G B --
FF = 255 = 0000'0000 | 0000'0000 | 1111'1111.--
100 = 256 = 0000'0000 | 0000'0001 | 0000'0000.--
FF00 = 65'280 = 0000'0000 | 1111'1111 | 0000'0000.--
10000 = 65'536 = 0000'0001 | 0000'0000 | 0000'0000.--
FF0000 = 16'711'680 = 1111'1111 | 0000'0000 | 0000'0000.--

- Que la fonction logique AND (ET en français) est :
0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1

Source / Exemple :


'A vous de mettre ça sous forme de fonction ou de procédure !
 
 Dim C As Long  'Couleur codée en 24 bits [mot de 3 octets] (de 0 à 16'777'215)

 Dim R As Byte  'Composante Rouge (  Red en anglais) codée sur 1 octet (de 0 à 255)
 Dim G As Byte  'Composante Vert  (Green en anglais) codée sur 1 octet (de 0 à 255)
 Dim B As Byte  'Composante Bleu  ( Blue en anglais) codée sur 1 octet (de 0 à 255)
  
 R = C& And &HFF&
 G = (C& And &HFF00&) \ &H100&
 B = C& \ &H10000  'au lieu de B= (C& And &HFF0000) \ &H10000

Conclusion :


Si vous trouvez plus "rapide" (à part faire en sorte de ne pas avoir à décomposer la couleur), je suis preneur !

A voir également

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.