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 :

brusche color dialog


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut brusche color dialog
    Bonsoir à tous et toutes
    Sur une application qui à un moment édit des états, je cherche a faire en sorte que l'utilisateur puisse changer les couleurs du texte, de la grille, du fond de cases.

    voila le debut de code que je fais avec des couleurs bien définis
    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
     
     
     Dim co0 As Pen = Pens.Purple   'couleur des rectangles Color.Aqua
                    Dim co10 As Brush = Brushes.Purple    'couleur des textes
                    Dim co40 As Brush = Brushes.White    'couleur des textes lettre A
                    Dim co20 As Brush = Brushes.Purple      'couleurs des fonds de rectangle concernés
                    Dim co30 As New Pen(color.Purple) 'couleur bas de feuille
     
                    'rectangle A
                    e.Graphics.FillRectangle(co2, New Rectangle(0 + X, 10, 28, 28)) 'cadre A ok
                    'Cadre principale
                    'MyGr.DrawRectangle(co, 0, 10, 370, 525)
     
                    'rectangle fond VIOLET LICENCE
                    e.Graphics.FillRectangle(Brushes.Pink, New Rectangle(332 + X, 10, 57, 513))
    'etc.....
    maintenant grâce colordialog je recupère une couleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            If colorDialog1.ShowDialog() = DialogResult.OK Then
     
                ' on met la couleur dans la propriété forecolor du TextBox
     
                TC15.BackColor = ColorDialog1.Color
     
     
            End If
     
     
        End Sub
    ici pour changer le fond d'un textbox

    La question est comment faire et est ce possible d'associer la couleur colordialog avec une couleur brusche???????

    Si oui une piste serait bien venue.

    Merci par avance
    @+
    Philippe

  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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim p As Pen = New Pen(ColorDialog1.Color)
    Dim b As Brush = New SolidBrush(ColorDialog1.Color)

  3. #3
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    bonjour et merci. je n'avais pas pensé à ça
    @+
    Philippe

  4. #4
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    bonjour
    je cherche a enregistrer la valeur d'un dialogcolor dans la base de registre, ça sa marche
    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
     
      Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
     
            Dim key As Microsoft.Win32.RegistryKey
     
            key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Couleur_page_rugby")
            key.SetValue("1", co1)
     
        End Sub
     
        Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If ColorDialog1.ShowDialog() = DialogResult.OK Then
     
                ' on met la couleur dans la propriété forecolor du TextBoxc
     
     
     
                Me.TextBox1.BackColor = ColorDialog1.Color
                co1 = (ColorDialog1.Color).ToArgb
            End If
        End Sub
    pour récupérer la valeur je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Dim key As Microsoft.Win32.RegistryKey
            key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("CPR")
            Dim name As String = CType(key.GetValue("1"), String)
    mais comment exploiter la valeur??? du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Dim co As Pen = Pens.Purple
    ou pens.purpule serait remplacé par ma valeur du registre.

    Je sèche un peut

    Merci
    @+
    Philippe

  5. #5
    Membre habitué Avatar de benito9253
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 205
    Points : 196
    Points
    196
    Par défaut
    Salut

    essaye avec Color.FromArgb()

  6. #6
    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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim name As String = CType(key.GetValue("1"), String)
    pourquoi name ? tu as enregistré la valeur ARGB de la couleur, pas son nom...

    ce serait plutôt ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim argb As Integer = Convert.ToInt32(key.GetValue("1"))
    Dim col as Color = Color.FromArgb(argb)
    Sinon, je trouve pas ça très pratique d'enregister la couleur comme un entier... je l'aurais plutôt enregistrée en code HTML (par exemple #FF0000 pour rouge) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim html As String = ColorTranslator.ToHtml(col)
     
    ...
     
    Dim col As Color = ColorTranslator.fromHtml(html)

  7. #7
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    bonjour,
    je suis toujours dans l'apprentissage

    Maintenant si j'enregistre directement cette valeur dans le registre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      key.SetValue("1", "0xff800080")
    recupération

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      Dim name2 As String = CType(key.GetValue("2"), String)
     
     Dim co1 As Brush = New SolidBrush(Color.FromArgb(name2))
    comment faire pour récupérer et ne pas avoir l'erreur suivante.

    La conversion de la chaîne "0xffffffff" en type 'Integer' n'est pas valide.

    si j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Dim key As Microsoft.Win32.RegistryKey
     
            key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("CPR")
            key.SetValue("1", co1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      If ColorDialog1.ShowDialog() = DialogResult.OK Then
     
                ' couleur ligne
     
     
     
                Me.TxtFondBhaut.BackColor = ColorDialog1.Color
                co1 = (ColorDialog1.Color).ToArgb
    La ça marche
    ça doit être un pb de conversion ???

    merci a +
    Philippe

  8. #8
    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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    pourquoi tu utilises ce format ("0xff800080") ? c'est la notation hexadécimale de C#, donc je vois pas trop le rapport avec ton truc...
    Enregistre la valeur en tant qu'entier, ou alors sous le format HTML que je t'ai indiqué plus haut

  9. #9
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    dans la base de registre je retrouve la valeur hexa(ff800080) et la bin (4286578816)

    ça c'est l'enregistrement fait quand j'utilise co3 = (ColorDialog3.Color).ToArgb

    et comme ça marche comme ça je ne veux pas tous changer.

    Par contre je cherche a faire un enregistrement de valeur par défaut et c'est la que ça plante. Pourtant se sont bien des valeurs ff800080 qui s'enregistre. Quand je récupère la valeur par defaut ça plante si c'est la valeur enregistré par le colordialog c'est bon????

    Suis je claire??
    Merci par avance

    Philippe

  10. #10
    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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Quand tu enregistres Color.ToArgb(), ça l'enregistre en tant qu'entier, qui est représenté en base de registre sous sa forme hexadécimal. Donc quand tu le récupères, il faut aussi le traiter comme un entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    key.SetValue("1", color.ToArgb())
     
    ...
     
    Dim color2 As Color = Color.FromArgb(CType(key.GetValue("1"), Integer))

  11. #11
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    Bon dernière fois parce que sa me soule un peut.

    A l'action clic j'enregistre

    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
     
     Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
     
     
            Dim key As Microsoft.Win32.RegistryKey
     
            key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("CPR")
            key.SetValue("1", "ff800080")
            key.SetValue("2", "ffb5857d")
            key.SetValue("3", "ffb5857d")
            key.SetValue("4", "ffffffff")
            key.SetValue("5", "ff800080")
            key.SetValue("6", "ffdc9cc5")
        End Sub
    valeurs récupérés dans le registre et copiés "ff800080"

    les valeurs sont bien enregistrées.

    si je veux faire se qui suit impossible( je dois être dur de la feuille)

    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
     
     Private Sub couleur_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim key As Microsoft.Win32.RegistryKey
            key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("CPR")
            Dim name As String = CType(key.GetValue("1"), String) ' CO2 couleurs des fonds de rectangle A haut concernés
            Dim name2 As String = CType(key.GetValue("2"), String)
            Dim name3 As String = CType(key.GetValue("3"), String)
            Dim name4 As String = CType(key.GetValue("4"), String)
            Dim name5 As String = CType(key.GetValue("5"), String)
            Dim name6 As String = CType(key.GetValue("6"), String)
     
            Try
                Me.TxtFondBhaut.BackColor = Color.FromArgb(name)
            Catch
                Me.TxtFondBhaut.BackColor = Color.GreenYellow
     
            End Try
    si je met une valeur enregistrée a partir de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButlettreB.Click
            If ColorDialog4.ShowDialog() = DialogResult.OK Then
     
                ' couleur texte
     
     
     
                Me.Txt4.BackColor = ColorDialog4.Color
                co4 = (ColorDialog4.Color).ToArgb
            End If
        End Sub
    la ça marche???

    merci et si tu veut plus répondre pas grave
    @+
    Philippe

  12. #12
    Membre averti Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Points : 428
    Points
    428
    Par défaut
    Salut, Color.FromArgb() attend un Integer comme variable hors tu lui passe une String donc ça ne risque pas de marcher.
    If faudrait d'abord que tu convertisses ta valeur hexa en integer pour que ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.TxtFondBhaut.BackColor = Color.FromArgb(Convert.ToInt32(name, 16))

  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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    philguio, j'ai l'impression que tu tiens aucun compte des réponses que je te donne

    Soit tu enregistres la couleur en tant que chaine de caractères, et dans ce cas quand tu la récupères il faut la traiter comme une chaine de caractères
    Soit tu l'enregistres en tant qu'entier, et tu la relis en tant qu'entier.

    Le code que j'ai mis dans mon précédent post fonctionne très bien, je l'ai testé

  14. #14
    Membre régulier
    Profil pro
    Enseignant
    Inscrit en
    Décembre 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 324
    Points : 93
    Points
    93
    Par défaut
    bonjour
    j'ai trouvé grâce a vous tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Dim val2 As Integer = Convert.ToInt32("ffb5857d", 16)
    merci
    @+
    PHILPPE

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

Discussions similaires

  1. Color Dialog pour Silverlight ?
    Par Invité dans le forum Silverlight
    Réponses: 3
    Dernier message: 11/03/2009, 18h50
  2. Color Dialog c#
    Par mischa dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/07/2007, 16h46
  3. Pop-up d'une dialog box a partir d'un bouton
    Par bobbyjack dans le forum MFC
    Réponses: 21
    Dernier message: 13/09/2005, 15h32
  4. TObject->Color et composantes RGB
    Par Flo. dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/06/2002, 17h07
  5. [Kylix] Memo color
    Par Metal3d dans le forum EDI
    Réponses: 1
    Dernier message: 21/05/2002, 17h12

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