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

C# Discussion :

Récupérer le véritable hexadecimale d'une couleur ARGB


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 116
    Par défaut Récupérer le véritable hexadecimale d'une couleur ARGB
    Salut,
    j'ai un souci qui est le suivant,

    j'ai un objet couleur suivant

    var couleur = ColorTranslator.FromHtml("#99FFCC");

    je lui ajoute de l'opacité en créant une couleur ARGB

    var couleurARGB = Color.FromArgb(90, couleur .R, couleur .G, couleur .B);

    j'aimerai récupérer la véritable valeur hexadecimale de cette couleur ARGB mais je sais pas si c'est possible ...


    en effet si je fais var colorFinal= "#" + couleurARGB .R.ToString("X2") + couleurARGB .G.ToString("X2") + couleurARGB .B.ToString("X2");
    j'obtiendrai la même chose que couleur à savoir 99FFCC


    est ce possible de faire ce que je veux faire ?

    merci

  2. #2
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Ta couleur HTML suppose implicitement une opacité par défaut de 255(FF)...


    Mais rien n’empêche de récupérer le paramètre opacité de ta nouvelle couleur (A de ARGB) si tu redéfinis A à la valeur 90...

    code exemple .vb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Public Class Frm
     
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Dim couleur As Color = ColorTranslator.FromHtml("#FF99FFCC")
            Label1.BackColor = couleur
            'opacité  
     
            Dim couleurARGB As Color = Color.FromArgb(90, couleur.R, couleur.G, couleur.B)
            Label2.BackColor = couleur
            '  valeur hexadecimale 
     
            Dim colorFinal As String = "#" +
                couleurARGB.A.ToString("X2") +
                couleurARGB.R.ToString("X2") +
                couleurARGB.G.ToString("X2") +
                couleurARGB.B.ToString("X2")
            TextBox1.Text = colorFinal
            Dim couleurBis As Color = ColorTranslator.FromHtml(colorFinal)
            Label3.BackColor = couleurBis
        End Sub
    End Class
    bon code..

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    oups

    voici le code C#...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
     
    public partial class Frm : Form
        {
            public Frm()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                 Color couleur  = ColorTranslator.FromHtml("#FF99FFCC");
                 this.label1.BackColor = couleur;
     
                // opacite  
     
                Color couleurARGB   = Color.FromArgb(90, couleur.R, couleur.G, couleur.B);
                this.label2.BackColor = couleur;
     
                //valeur hexadecimale 
     
               string  colorFinal = "#" +
                   couleurARGB.A.ToString("X2") +
                   couleurARGB.R.ToString("X2") +
                   couleurARGB.G.ToString("X2") +
                   couleurARGB.B.ToString("X2");
                this.TextBox1 .Text = colorFinal;
     
                Color  couleurBis = 
                    ColorTranslator.FromHtml(colorFinal);
                this.label3.BackColor = couleurBis;
            }
        }
    bon code

  4. #4
    Membre expérimenté
    Homme Profil pro
    Collégien
    Inscrit en
    Mai 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Collégien
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 116
    Par défaut
    merci pour ta réponse, j'ai codé et testé ta solution, mais je pense que je me suis mal exprimé, je vais essayer d’expliquer plus clairement mon problème,

    d'un coté j'ai une api qui prend en entrée 2 strings, valeur hexadécimale d'une couleur, cet api génère un document avec certains éléments de la couleur numéro 1, et d'autre élément de la couleur numéro 2
    cette api ne prend pas en compte l'opacité des couleurs.

    de l'autre coté j'ai mon code c# qui va appeler l'api, mais l'utilisateur passe à ce code c# qu'une seule couleur ( ici "#99FFCC" ) c'est la couleur numéro 1 qui sera passé à l'api,
    et du coup mon code c# doit calculer la couleur numéro 2 afin d'avoir une version "pale" de la couleur numéro 2, c'est pour ça que j'ai pensé à utiliser l'opacité afin de générer une nouvelle couleur.

    par exemple si en HTML j'affiche la couleur "#99FFCC" et que j'utilise une pipette de couleur, la pipette de couleur me renverra "#99FFCC" par contre si en HTML j'affiche la couleur "#99FFFC" avec 50 % d'opacité ma pipette de couleur me renverra (valeur que je dis au hasard ) "#85CFFC".

    pour résumer les contraintes de l'api font que j'ai vraiment besoin de 2 couleurs distinctes, du coup je cherche à générer le hexadécimale d'une deuxième couleur qui serait plus pâle que la première ^^

  5. #5
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    rebonjour

    Si j'ai bien compris le souci tu peux procéder ainsi et ce n'est qu'un exemple sur la méthode à suivre ,la source de couleur pouvant être autre qu'une ColorDialog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public partial class Frm2 : Form
        {
            public Frm2()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
     
                string strClr = getcolor();
                if (strClr != "#")
                {
                    this.label1.BackColor = ColorTranslator.FromHtml(getcolor());
                }
            }
            private string getcolor()
            {
                String code = "#";
                // tu "pick" par exemple une couleur "BLEUE" & 
                // dans couleurs personnalisés tu choisis un "BLEU PALE" et tu valides
                if (colorDialog1.ShowDialog()==DialogResult.OK )
                {
                    //filtrer la composante Alpha
                    code += (colorDialog1.Color.ToArgb() & 0x00FFFFFF).ToString("X2");
                }
                return code;
            }
        }
    bon code...

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/07/2017, 20h45
  2. [Lazarus] Récupérer une couleur d'un tcolorbox
    Par nnniii dans le forum Lazarus
    Réponses: 2
    Dernier message: 21/05/2007, 15h18
  3. Récupèrer une couleur du Look & Feel
    Par Invité dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 16/08/2006, 17h37
  4. Réponses: 2
    Dernier message: 26/10/2004, 18h42
  5. [VB.NET] Récupérer les caractéristiques d'une couleur
    Par leSeb dans le forum Windows Forms
    Réponses: 6
    Dernier message: 15/08/2004, 16h03

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