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

Visual Studio Discussion :

Comment importer ColorDialog (windows.forms) dans WPF en VB.NET ?


Sujet :

Visual Studio

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Comment importer ColorDialog (windows.forms) dans WPF en VB.NET ?
    Bonjour,

    Je veux réécrire un programme VB6 en VB.NET (VisualStudio 2013) sous WPF.
    Mon programme est basé sur l'utilisation du sélecteur de couleurs (colorDialog) qui n'existe pas en WPF .
    Comment faire pour réutiliser ce contrôle ou le remplacer par son équivalent en WPF .

    Bien cordialement.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Précision
    Re Bonjour,

    En cherchant sur le web, j'ai trouvé ce qui pourrait être une piste à mon problème.
    Il serait en effet possible d' "héberger" un Windows Forms dans WPF...
    http://msdn.microsoft.com/en-us/libr...(v=vs.90).aspx
    http://searchwindevelopment.techtarg...rDialog-in-WPF

    Je lis notamment ceci :

    Avant que je peux (puisse) utiliser la boîte de dialogue Windows Form dans mon projet, je dois ajouter une référence à l'assembly correct. Depuis ColorDialog est une classe. NET, il est facile d'ajouter une référence à son assemblage (System.Windows.Forms.dll) dans un projet WPF. Je dois également ajouter une référence à System.Drawing.dll Pour accéder la structure System.Drawing.Color.
    (Traduction automatique)
    Tout ceci étant du chinois pour moi, quelqu'un peut-il m'expliquer la marche à suivre?

    Merci d'avance.

  3. #3
    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 : 42
    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 749
    Points
    39 749
    Par défaut
    Dans l'explorateur de solution, tu fais un clic droit sur le projet, et tu choisis "Ajouter une référence". Dans le dialogue qui s'affiche, tu choisis les assemblies System.Windows.Forms et System.Drawing.
    Dans ton code, tu importes les namespaces correspondants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Imports System.Windows.Forms
    Imports System.Drawing
    Ensuite tu peux utiliser le ColorDialog normalement.

    Par contre la couleur renvoyée sera une couleur Windows Forms (GDI), pas une couleur WPF, donc il faudra convertir, en utilisant cette méthode par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function GdiColorToWpfColor(ByVal gdiColor As System.Drawing.Color) As System.Windows.Media.Color
        Return System.Windows.Media.Color.FromArgb(gdiColor.A, gdiColor.R, gdiColor.G, gdiColor.B)
    End Function

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bonsoir tomnev,

    Et un grand merci pour ta réponse.

    J'y vois nettement plus clair sur la façon d' ajouter les références et çà a marché !
    Maintenant quant à utiliser le ColorDialog "normalement", il va falloir que je recherche comment je faisais précédemment.
    Je savais qu'il fallait convertir le codage des couleurs, mais je ne savais pas comment.

    Je reprendrais la conversation un peu plus trad car j'ai effacé certains fichiers et plus rien ne fonctionne.
    Je recommence mes essais à zéro, cela me fait réviser. (C'est passionnant, mais quand même assez compliqué pour mes petits neurones...)

    Bien cordialement.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Retour
    Bonjour tomlev,tous,

    Je me suis enfin remis à la tâche...

    J'utilise donc ta fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function ConvertCouleur(ByVal gdiColor As System.Drawing.Color) As System.Windows.Media.Color
        Return System.Windows.Media.Color.FromArgb(gdiColor.A, gdiColor.R, gdiColor.G, gdiColor.B)
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Private Sub Boite_Click(sender As Object, e As RoutedEventArgs) Handles Boite.Click 'Bouton Affiche la Boite
            Dim Selecteur As New System.Windows.Forms.ColorDialog 
            Selecteur.ShowDialog() 
            Dim COULEUR As System.Drawing.Color
            COULEUR = Selecteur.Color
            Label_1.Content = COULEUR  'OK !!! Par exemple 70,153,34
            Label_2.Content = ConvertCouleur(COULEUR) 'OK !!! Par exemple #FF469922
             Cercle.Fill = ConvertCouleur(COULEUR)
            "Impossible de convertir une valeur de type "System.Windows.Media.Color" en "`System.Windows.Media.Brush"
        End Sub
    Voilà donc un bouton qui affiche le sélecteur Windows.Forms et la fonction qui convertit les couleurs d'un système à l'autre...
    Dans Label-1 j'affiche bien la valeur de la couleur retournée par le Sélecteur de couleurs Par exemple : 70,153,34
    Dans Label-2, j'affiche bien la valeur convertie . Par exemple : #0000FF
    Maintenant quand je veux faire un Fill sur une ellipse appelée "Cercle", j'ai toujours une erreur : "Impossible de convertir une valeur de type "System.Windows.Media.Color" en "`System.Windows.Media.Brush"

    Je ne trouve pas quelle solution adopter pour remplir mon cercle avec la couleur choisie...
    Je ne doute pas qu'il existe une réponse, mais je cherche depuis pas mal de temps et je n'ai pas trouvé...

    Merci par avance.

  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 : 42
    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 749
    Points
    39 749
    Par défaut
    En WPF, les propriétés Fill, Stroke, Background, BorderBrush etc ne sont pas des couleurs mais des Brush (pinceaux), parce que ce n'est pas forcément des couleurs unies mais ça peut aussi être des dégradés, des motifs, etc. Si tu veux une couleur unie, utilise SolidColorBrush :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cercle.Fill = New SolidColorBrush(ConvertCouleur(COULEUR))

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merveilleux,

    Ça marche !!

    Après des heures et des heures de réflexion, c'est un grand bonheur de voir un programme qui fonctionne comme on voudrait, grâce à l'aide d'un membre d'un forum que l'on ne connait même pas ...
    Merci à Développez.com, aux membres qui m'ont aiguillés vers la solution, et tout particulièrement à tomlev d'une efficacité redoutable et d'une excellente pédagogie !!!

    Amitiés.

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2013
    Messages : 100
    Points : 110
    Points
    110
    Par défaut importer colorDialog
    pour importer colorDialog sur un window form, vous devez instancier l'objet

    par ex sur contrôle click, placer ce code :

    dim xy as new colordialog
    xy.show

Discussions similaires

  1. Réponses: 8
    Dernier message: 18/12/2014, 11h13
  2. Réponses: 1
    Dernier message: 09/11/2010, 21h13
  3. [Interaction] Comment afficher une application Windows Form dans une WPF ?
    Par Lookoum dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 08/09/2008, 16h50
  4. Comment importer un fichier text dans une table
    Par mongilotti dans le forum SQL
    Réponses: 6
    Dernier message: 21/05/2007, 13h05
  5. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03

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