Conversion de couleur rgb vb6 en couleur argb .net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 109 fois - Téléchargée 21 fois

Contenu du snippet

Ce code permet de convertir une couleur RGB utilisée par VB6 ex : Rouge 255 En ARGB utilisé par .NET Color.fromARGB(255,255,0,0) (Rouge).

Source / Exemple :


Public Function ColorTranslation(ByVal ColorInt As Integer) As Color
        If Math.Sign(ColorInt) = -1 Then
            Return Color.FromArgb(ColorInt)
        Else
            Dim A, R, G, B As Integer

            Dim STColor As String = System.Convert.ToString(ColorInt, 16)
            STColor = STColor.PadLeft(6, "0"c)
            A = 255
            B = System.Convert.ToInt32(STColor.Substring(0, 2), 16)
            G = System.Convert.ToInt32(STColor.Substring(2, 2), 16)
            R = System.Convert.ToInt32(STColor.Substring(4, 2), 16)

            Return System.Drawing.Color.FromArgb(A, R, G, B)
        End If

    End Function

A voir également

Ajouter un commentaire Commentaires
Picpic10 Messages postés 7 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 12 mai 2009
20 mai 2008 à 17:01
Ca pourrais m'aider. Aurais tu la fonction inverse?

Je cherche tout simplement a enregistrer une couleur dans une base MS SQL 2005.
EricNRC Messages postés 24 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 24 janvier 2008
16 janv. 2008 à 13:10
sa fonctione très bien ta fonction merci encore!
cs_PHILIPPO Messages postés 6 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 1 décembre 2009
9 janv. 2008 à 09:29
Merci pour tes conseils Charles
Utilisateur anonyme
8 janv. 2008 à 20:07
Salut,

Attention aux types de données.
System.Convert.ToInt64 renvoie un long, donc c'est plutôt System.Convert.ToInt32

STColor.PadLeft(6, "0") :
Le deuxieme argument est un char. en vb.net, on met "0"c

Hex(ColorInt) :
Utilise les outils du framework comme tu l'as fait plus bas :
System.Convert.ToString(ColorInt, 16)

Sinon, il aurait été mieux de faire ca sans passer par une transormation hexadécimale.
Extrait directment les composantes (Bytes) par calcule.
l'outil est tout fait: System.BitConverter.GetBytes

Il manque aussi la fonction inverse.
__
Kenji

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.