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

Windows Forms Discussion :

ColorDialog(), nom de couleur et conversion


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut ColorDialog(), nom de couleur et conversion
    Bonjour,

    Dans une de met table j'ai :

    Objet_Id | Action_Id | Action_Type | Valeur
    int | int | string | string
    Exemple :

    Label1 | BackColor | color | Red

    Label2 | BackColor | color | ff4380bc

    Je remplie le champ Valeur avec une ColorDialog().

    Ensuite je me sers de cette Table pour modifier les propriétés des controls.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    // Nom du control , Nom de la property , Valeur , type
    private void AffSecuriteMenu(string oControl, string oProperty, string Valeur, string VType)
            {
                foreach (Control control in this.Controls)
                {
                    if (control.Name == Barre_Menu.Name)
                    {
                        foreach (ToolStripItem TSI in Barre_Menu.Items)
                        {
                            if (TSI.Name == oControl)
                            {
    
                                System.Type ControlType = TSI.GetType();
                                PropertyInfo pi = ControlType.GetProperty(oProperty);
    
                                switch (VType)
                                {
                                    case "bool":
                                        pi.SetValue(TSI, Convert.ToBoolean(Valeur), null);
                                        break;
    
                                    case "color": // Si c'est une couleur
    //Soit elle est au format Nom soit en héxadécimal
                                        
                                       if (!Valeur.IsNamedColor)
    // Erreur pas de def pour IsNamedColor : normal car Valeur n'est pas une couleur
                                        {
    // On récupere la couleur qui correspond au code héxadécimal
                                            Color cColor = ColorTranslator.FromHtml(Valeur);
    
                                            pi.SetValue(TSI, System.Drawing.Color.cColor, null);
    // Pas de définition pour cColor
                                        }
                                        else
                                        {
                                            pi.SetValue(TSI, System.Drawing.Color.Valeur, null);
    // Pas de def pour Valeur
                                        }
                                        break;
                                }
                            }
                        }
                    }
                }
            }
    Il faut donc trouver un moyen de récupérer une couleur grâce à son nom.

    Ou si vous avez d'autres solutions...

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    3 moyens d'obtenir une couleur à partir d'autre chose :

    System.Drawing.Color.FromArgb()
    System.Drawing.Color.FromKnownColor()
    System.Drawing.Color.FromName()

    2 moyens d'avoir une couleur sous une autre forme :
    MyColor.ToArgb
    MyColor.ToKnownColor


    le mieux est d'avoir les couleurs en Argb (donc en entier 32 bits) enregistrer les noms des couleurs dans la base de données est pas top ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Points : 114
    Points
    114
    Par défaut
    Alors j'ai suivi ton conseil : J'ai converti mes couleurs en Argb, puis en string, avant de les enregistrer dans ma base.

    Et après pour changer un backcolor par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pi.SetValue(control, System.Drawing.Color.FromArgb(Convert.ToInt32(Valeur)), null);
    Merci beaucoup!

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

Discussions similaires

  1. nom des couleurs en vba
    Par calvi2002 dans le forum Général VBA
    Réponses: 3
    Dernier message: 15/07/2009, 09h01
  2. Association code RGB à son nom de couleur
    Par aichaeside dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 20/05/2009, 16h18
  3. Combo : Afficher le nom des couleurs en francais
    Par ddubois dans le forum Langage
    Réponses: 3
    Dernier message: 17/06/2008, 18h45
  4. [VBA-E] Nom et couleur bouton fonction d'une cellule
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2006, 17h00
  5. Transformer un nom de couleur en TColor
    Par boober31 dans le forum Langage
    Réponses: 5
    Dernier message: 26/02/2006, 04h31

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