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 :

Conversion type string en type image


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de mbar
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 60
    Points : 45
    Points
    45
    Par défaut Conversion type string en type image
    Bonjour,

    J'ai stocké des images (de pion1 à pion10) dans les ressources de mon projet mais je n'arrive pas à les affecter par programme car j'ai une erreur de convertion de type.
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Image monImage;
    monImage = "monprojet.Properties.Resources.pion" + Persistance.Numero.ToString();
    pictureBox1.Image = monImage;
    Quelqu'un aurait une solution à me proposer ?
    D'avance merci

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    La classe de ressources créée par le designer ne fait que wrapper l'accès aux ressources en créant une propriété par ressource.

    Mais si tu regardes le code des propriétés "pion1", "pion2", ..., tu verras ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            internal static System.Drawing.Bitmap pion1 {
                get {
                    object obj = ResourceManager.GetObject("pion1", resourceCulture);
                    return ((System.Drawing.Bitmap)(obj));
                }
            }
    Il te suffit de faire une petite méthode dans la classe de ressources qui appellera GetObject et qui se chargera de renvoyer la bonne erssource.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    internal static Bitmap GetPion(int numPion)
    {
      return (Bitmap)ResourceManager.GetObject("pion" + numPion.ToString(), resourceCulture);
    }
    Ton code ne fonctionne pas parce qu'en C#, il n'y a pas de lien direct entre les objets et leur nom. Si t'as déclaré une variable toto, tu ne pourras pas y accéder avec la chaîne de caractères "toto". Une chaîne, c'est une chaîne. toto, c'est toto, pas "toto"
    ಠ_ಠ

  3. #3
    Membre régulier

    Étudiant
    Inscrit en
    Août 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 108
    Points : 124
    Points
    124
    Par défaut
    Bonjour,

    En ajoutant les images aux ressources local du projet, il suffit d'utiliser la classe "Resources".

    Ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img = Resources.ResourceManager.GetObject("Pion1") as Image;
    Ou directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Image img = Resources.Pion1;

  4. #4
    Membre du Club Avatar de mbar
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    Merci pour vos réponses,

    J'ai ajouté la méthode GetPion de Guulh, mais comment je l'appelle de mon programme ?
    J'ai pourtant ajouté "using System.Resources;" en début de fichier mais lorsque je fais "Image img = Resource" il me propose que ResourceManager, ResourceGet, et ResourceSet mais pas de Resources.GetPion.... Idem avec le code de NotANumber.

  5. #5
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Parce que comme je disais tout a l'heure, la classe Resource propre a ton projet est generee automatiquement par visual studio ; il ne s'agit pas de System.Resources.

    pion1, pion2, etc. sont des membres de la classe monprojet.Properties.Resources. C'est dans cette classe que tu peux, par exemple, rajouter la methode GetPion.

    Pour trouver cette classe, facile : tape monprojet.Properties.Resources dans un de tes fichiers sources, clic-droit sur "Resources", "atteindre la definition".
    ಠ_ಠ

  6. #6
    Membre du Club Avatar de mbar
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    C'est OK !!!!
    La méthode GetPion était au bon endroit (Resources.Designer.cs) et j'ai juste ajouté à mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Image img = monprojet.Properties.Resources.GetPion(Persistance.Numero);
    pictureBox1.Image = img;
    Encore merci pour votre aide bien précieuse.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 17/06/2013, 16h21
  2. Réponses: 2
    Dernier message: 14/02/2011, 12h24
  3. Réponses: 2
    Dernier message: 18/02/2009, 13h30
  4. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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