IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

convertir couleur en Code hexadécimal


Sujet :

VB.NET

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut convertir couleur en Code hexadécimal

    voici mes codes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
            ColorDialog1.ShowDialog()
            PictureBox1.BackColor = ColorDialog1.Color
        End Sub
    bonjour, je voudrais de l'aide pour convertir une couleur en hexadecimal. quand je click sur pallette de couleur il m'affiche le code hexadecimale dans textbox1.text par ex : couleur noir = 000000.

    merci de votre aide.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim htmlColor As String = ColorTranslator.ToHtml(ColorDialog1.Color)

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    merci pour ton aide tomlev, mais j'ai modifier le code que tu m'a données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Text = ColorTranslator.ToHtml(ColorDialog1.Color)
    mais quand je click sur rouge dans la palette de couleur, il m'affiche dans textbox1.text = RED a la place ce code : FF0000
    peut-on corriger ce petit probléme. merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ce n'est pas un problème ; la valeur "red" est une couleur valide en HTML. Quand c'est une couleur connue, ça renvoie le nom plutôt que le code hexa.

    Si tu veux vraiment le code hexa, tu peux toujours faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function ToHtmlColor(ByVal c As System.Drawing.Color) As String
        Return String.Format("{0:X2}{1:X2}{2:X2}", c.R, c.G, c.B)
    End Function

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    voici en image ce que il me donne:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
            ColorDialog1.ShowDialog()
            PictureBox1.BackColor = ColorDialog1.Color
            Dim htmlColor As String = ColorTranslator.ToHtml(ColorDialog1.Color)
            TextBox1.Text = htmlColor
        End Sub
        Function ToHtmlColor(ByVal c As System.Drawing.Color) As String
            Return String.Format("{0:X2}{1:X2}{2:X2}", c.R, c.G, c.B)
        End Function
    ce me fait toujour le meme probleme.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
            ColorDialog1.ShowDialog()
            PictureBox1.BackColor = ColorDialog1.Color
            TextBox1.Text = ColorDialog1.Color.ToArgb.ToString("X")
        End Sub

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hacker59 Voir le message
    ce me fait toujour le meme probleme.
    Bah oui, tu as copié ma méthode ToHtmlColor, mais tu l'as pas appelée... ton code fait donc exactement la même chose qu'avant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim htmlColor As String = ToHtmlColor(ColorDialog1.Color)
    TextBox1.Text = htmlColor

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    merci tomlev, ça fonction maintenant.
    j'ai une dernière question. je voudrais convertir une couleur hexadécimal en quatre chiffe ou lettre.
    CODE DE COULEUR:
    rouge = FF0000 ça me donne AA 00
    noir = 000000 ça me donne AD 00
    néon vert = 39ff14 ça me donne CD 04 ou 28 03.

    pouvez-vous m'aider a résoudre mon dernier problème.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hacker59 Voir le message
    j'ai une dernière question. je voudrais convertir une couleur hexadécimal en quatre chiffe ou lettre.
    CODE DE COULEUR:
    rouge = FF0000 ça me donne AA 00
    noir = 000000 ça me donne AD 00
    néon vert = 39ff14 ça me donne CD 04 ou 28 03.
    Quelle est la logique de cette conversion? D'après ces exemples, je ne vois pas...

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    Quelle est la logique de cette conversion? D'après ces exemples, je ne vois pas.
    le but de mon probleme, je vous demande comment je vais pour convertir le code de couleur rouge en 16 bit highcolor.
    couleur rouge : AA 00

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ah ok, c'est ça que tu veux ?
    http://en.wikipedia.org/wiki/High_color

    Je suis pas sûr d'avoir bien compris le principe d'encodage, parce que pour moi, en suivant l'article de Wikipedia, le rouge ça devrait être ça :
    binaire : 11111 000000 00000
    hexa : F800
    Et pour le noir, ça devrait être 0000.
    De plus, comment peux-tu avoir 2 valeurs complètement différentes pour "néon vert" ?

    Ce que je vois ici confirme mes calculs.

    Je ne vois pas du tout comment arriver à AA00... tu es sûr de tes valeurs ?

  12. #12
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    bonjour tomlev

    je voudrais savoir comment on écrie le code pour convertir hex to 16 bit RGB

    ex: rouge HEX : FF0000 et je convertir en 16 bit : F800

    comment on écrie le code. merci

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hacker59 Voir le message
    bonjour tomlev

    je voudrais savoir comment on écrie le code pour convertir hex to 16 bit RGB

    ex: rouge HEX : FF0000 et je convertir en 16 bit : F800

    comment on écrie le code. merci
    Oui donc rien à voir avec ce que tu disais

    le format 16-bit highcolor encode le rouge sur 5 bits, le vert sur 6 bits, et le bleu sur 5 bits. Sachant qu'au départ tu as des valeurs sur 8 bits pour chacune des couleurs, il faut "tronquer" ces valeurs en éliminant les bits de poids faible, puis combiner ces bits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Shared Function ToHighColor(c As Color) As String
    	Dim r As Integer = c.R >> 3 ' on garde 5 bits sur 8
    	Dim g As Integer = c.G >> 2 ' on garde 6 bits sur 8
    	Dim b As Integer = c.B >> 3 ' on garde 5 bits sur 8
     
    	' on combine le tout :
    	Dim value As Integer = r << 11 Or g << 5 Or b
     
    	' on formate la valeur en hexa sur 4 chiffres
    	Return value.ToString("X4")
     
    End Function

  14. #14
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 267
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            TextBox1.Text = ToHighColor(TextBox2.Text)
        End Sub
        Shared Function ToHighColor(ByVal c As Color) As String
            Dim r As Integer = c.R >> 3
            Dim g As Integer = c.G >> 2
            Dim b As Integer = c.B >> 3
            Dim value As Integer = r << 11 Or g << 5 Or b
            Return value.ToString("X4")
        End Function
    j'ai un petit probleme textbox1 et textbox2, ca fonctionne toujour pas.

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hacker59 Voir le message
    j'ai un petit probleme textbox1 et textbox2, ca fonctionne toujour pas.
    Sois plus précis quand tu décris ton problème, on peut pas toujours lire entre les lignes pour deviner ce qui ne va pas...

    Tu es supposé passer une couleur en paramètre de la fonction ToHighColor, pas une chaine de caractères. C'est exactement pareil qu'avec ToHtmlColor.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/09/2006, 09h36
  2. [Image]Convertir couleurs images avec palette donnée
    Par matique dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/02/2006, 18h51
  3. [HTML] Convertir accent en code
    Par zoom61 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 08/02/2006, 15h00
  4. Convertir un Int en Hexadécimal
    Par Benjy dans le forum C++Builder
    Réponses: 14
    Dernier message: 12/10/2005, 18h22
  5. Couleur du code HTML, JSP
    Par tscoops dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 25/05/2004, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo