Convertir une couleur RGB et un Alpha en une couleur ARGB en ActionScript 3
Lundi, mai 19th, 2008Alors que je travaillais avec le color picker component (je vais éventuellement trouver les équivalence en Français) qui vient avec Flash CS3, je me suis rendu compte que celui-ci nous retournait, par l’entremise du ColorPickerEvent.CHANGE, une couleur en format RGB. Si vous vouliez , par exemple, utiliser la méthode setPixel32 de la classe BitmapData pour créer des Bitmap avec transparence, vous seriez obligés de tranformer la couleur retourner par le color picker en format ARGB. Voici un fonction simple qui vous permet de le faire:
function returnARGB(rgb:uint, newAlpha:uint):uint{ //newAlpha has to be in the 0 to 255 range var argb:uint = 0; argb += (newAlpha<<24); argb += (rgb); return argb; }
Ce que cette fonction fait, c’est qu’elle “bit shift” la valeur du Alpha que vous lui passez et l’ajoute à la couleur RGB pour en faire une couleur ARGB. Le format RGB utilise 8 bits pour chaques couleurs (24 bits en tous), quand vous ajoutez la transparence, le canal alpha ajoute un autre 8 bits (donc un total de 32 bits ce qui explique le nom de la fonction setPixel32. Cela explique aussi pourquoi newAlpha dans la fonction doit être entre 0 et 255 parce que 255 est le plus gros chiffre que l’on peut obtenir avec 8 bits. La couleur bleu occupe les bits 1 à 8, le vert les bits 9 à 16, le rouge les bits, 17 à 24 et enfin Alpha les bits 25 à 32. C’est pour cela qu’on bit shift le alpha de 24 bits (newAlpha << 24).