Conversion de couleur rgb vb6 en couleur argb .net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 590 fois - Téléchargée 20 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
Messages postés
7
Date d'inscription
mardi 18 octobre 2005
Statut
Membre
Dernière intervention
12 mai 2009

Ca pourrais m'aider. Aurais tu la fonction inverse?

Je cherche tout simplement a enregistrer une couleur dans une base MS SQL 2005.
Messages postés
24
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
24 janvier 2008

sa fonctione très bien ta fonction merci encore!
Messages postés
6
Date d'inscription
mardi 24 juin 2003
Statut
Membre
Dernière intervention
1 décembre 2009

Merci pour tes conseils Charles
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
32
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.