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++/CLI Discussion :

Image Liste index


Sujet :

C++/CLI

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut Image Liste index
    Bonsoir , dans mon dictionnary j'ai une threeString ou j'attribue une valeur que j'aimerai associer a une image d'une imageListe pour l'afficher dans une pictureBox ,j'ai une bonne cinquantaines d'images et les conditions "if" sont limités en nombres le compilo bugue rapidement.
    J'ai consulté un tuto sur les image liste mais on ne montre que l'affichage , c'est dommage car c'est un super tuto pour les débutant comme moi .
    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    euh ... quelle est la question ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut

    Bonsoir nico-pyright(c)
    J'ai fais un dictionary avec trois string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    			ThreeStrs = gcnew ThreeStrings;
    			ThreeStrs->first = L"arbre";
    			ThreeStrs->second = L"vert";
    			ThreeStrs->three = L"image de l'arbre";
    			dict->Add(L"B005", ThreeStrs);
    dans ce cas three == image de l'arbre
    j'ai mis dans imageListe les images .
    j'aimerai savoir comment procéder pour afficher dans une pictureBox l'image correspondant a three.

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    et bien, il faut que tu t'arranges pour que ton image list contienne trois images, que tu ais changé leur nom (propriété name dans le designer) pour qu'ils correspondent à tes trois chaines : arbre, vert et image de l'arbre

    et quand tu voudras charger une image par rapport à ton dictonnary, tu feras un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pictureBox1->Image = imageList1->Images["la clé qu'il faut"];

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Excuse moi il te manquait une étape , : les 2 premières string^ sont des message texte , seule la string^ three est une image .
    c'est la correspondance imageListe <->dictionnary que je n'arrive pas a faire .

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ThreeStrings ^result;
    if (dict->TryGetValue("B005", result))
    {
    	pictureBox1->Image = imageList1->Images[result->three];
    }

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    J'avais fais la même chose mais ayant plus d'une cinquantaine d'image le compilo va bugguer .
    en fait le but est que si la valeur de three de mon dictionary est exemple :1 j'affiche dans la picturebox l'image 1 , si la valeur de three est 25 j'affiche l'image 29 ou autre etc....
    Mais sans utiliser les condition If .

  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    oui mais quel élément de ton dictionnaire tu veux utiliser ? à moins qu'il n'y ait qu'une seule valeur dans ton dictionnaire ou que tu veuilles boucler sur tous les éléments de ton dictionnaire, il faut que tu détermines quel élément utiliser

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    mon dico a env 1300 valeurs .L'element ou variable se sera la ThreeStrs->three = L"image ";

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Demain soir je te préparerai un bout de code car j'ai du mal a te l'expliquer de manière simple .
    Merci en attendant pour ton aide ,@++

  11. #11
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    moi ce que j'ai compris, c'est que ton dictionnaire contient des objets de type ThreeStrings et qu'il y en a 1300 dedans ...
    chaque élement de ces 1300 valeurs possède une propriété (three) qui donne l'url d'une image

    ma question est : quelle image veux-tu afficher parmi ces 1300 ? tu veux afficher les 1300 images ? une seule ? comment est-elle choisie ?

    ou alors j'ai rien compris

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Je veus en afficher que quelques une env 50 et parfois 2 images.
    l'image est choisie en fonction de la valeur three.
    exemple si three == "1" picturebox = arbre mais sans utiliser des "if" ou else if car ça buggue quand il y en a trop .

  13. #13
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    c'est pas comme ca qu'il faut faire alors
    soit, ton objet est capable de stocker le nom (ou l'id) de l'image que tu veux afficher, soit il te faut faire un tableau de correspondance pour éviter tous tes ifs

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Tu veus dire que si je mets par exemple :
    ThreeStrs->three = L"arbre.bmp";
    je vais pouvoir afficher l'image "arbre.bmp" dans la picturebox avec commande de la picturebox dans la picturebox ? si oui laquelle ?
    Pour le tableau y a t'il une faq ou autre sur le sujet ?

  15. #15
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    je proposais au début qu'il y ait dans ton objet l'identifiant de ton image dans l'image list, comme ca tu y accèdes.
    Sinon, tu peux avoir un dictionnaire qui, à partir de ta clé, renvoit le nom de ton image ... mais bon, autant le stocker dans ton objet

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par nico-pyright(c) Voir le message
    je proposais au début qu'il y ait dans ton objet l'identifiant de ton image dans l'image list, comme ca tu y accèdes.
    c'est ce que je cherche a faire je ne sais pas comment avec le dictionnaire actuel ou j'ai une variable three allez chercher l'image dans la l'imagelist .
    voici mon imageliste (un extrait):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    			// imageList1
    			// 
    			this->imageList1->ImageStream = (cli::safe_cast<System::Windows::Forms::ImageListStreamer^  >(resources->GetObject(L"imageList1.ImageStream")));
    			this->imageList1->TransparentColor = System::Drawing::Color::Transparent;
    			this->imageList1->Images->SetKeyName(0, L"arbre.bmp");
    			this->imageList1->Images->SetKeyName(1, L"fleur.bmp");
    			this->imageList1->Images->SetKeyName(2, L"detresse.bmp");
    			this->imageList1->Images->SetKeyName(3, L"vis.bmp");

  17. #17
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pourquoi dans ton objet tu rajoutes pas une propriété Four qui contient le nom qu'on doit trouver dans ton image list
    Une conception à l'origine t'aurais aidé à savoir exactement comment faire ce que tu veux

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    Pas besoin de four car a l'origine mon projet etait un dico simple avec 2 textbox donc en two maintenant je suis passé en three pour afficher mes images qui sont dans l'imagelist dans une picturebox .
    Mon probleme est que je ne sais pas comment en fonction de la valeur three afficher les images de mon imageliste.

  19. #19
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    il y a plein de facons ...
    l'une d'elle, faire un objet qui fait un mapping :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dictionary<String ^, String ^> ^dicoMapping = gcnew Dictionary<String ^, String ^>();
    dicoMapping->Add("arbre", "arbre.bmp");
    dicoMapping->Add("feuille", "laFeuille.bmp");
    Console::WriteLine(dicoMapping["arbre"]); // affiche "arbre.bmp"
    par exemple avec un dictionnaire

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Points : 55
    Points
    55
    Par défaut
    La solution de ce servir du dico existant n'est pas possible ? j'ai reservé la Three specialement pour un nombre correspondant a mon imageliste.
    Car comme tu dis je vais devoir recoder tout mon dico (1300 first , 1300 t..., etc) . c'est comme tu disai: une propriété (three) qui donne l'url d'une image mais dans la listebox.
    comme l'exemple ci dessous ou il y a l'idée mais le code n'est pas bon
    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
     
     
    			ThreeStrs = gcnew ThreeStrings;
    			ThreeStrs->first = L"arbre";
    			ThreeStrs->second = L"vert";
    			ThreeStrs->three = L"5";
    			dict->Add(L"B005", ThreeStrs); 
     
     
          String^ b ="";  
          String^ c ="";
     
          c = index->imageListe ; 
          b = ThreeStrs->three;
          if (b == c)
     {
    	pictureBox1->Image = imageList1->index (c);
     }

Discussions similaires

  1. list index out of range
    Par watcha2020 dans le forum Général Python
    Réponses: 2
    Dernier message: 29/06/2006, 09h59
  2. Problèmes ... listes, index, ....
    Par Franck.H dans le forum GTK+ avec C & C++
    Réponses: 9
    Dernier message: 28/04/2006, 10h51
  3. [Image]Liste des algos de Compression ?
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 13/10/2005, 20h58

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