none
Mehrere Bilder in ein PictureBox neben einander laden wie? RRS feed

  • Allgemeine Diskussion

  • Hi,

    Ich habe ein Problem in meinem Programm was ich gerade schreibe. Ich habe sechs pictureBoxen erstellt und in jede ein anderes Bild eingefügt, ich habe die Bilder zu "Buttons" gemacht, außerdem habe ich noch eine pictureBox eingefügt, die die Bilder anzeigen soll. Nun will ich, dass wenn ich auf einen beliebigen ersten Button drücke ein Bild erscheint (das funktioniert ja auch), aber jetzt will ich, dass wenn ich auf einen zweiten beliebigen Button dücke das zweite Bild neben dem ersten zu sehen ist und beim dritten Bild dieses auch wieder neben dem ersten und zweiten steht usw.! 

    Wie kann ich das Schaffen? - Meine bilder sind jeweils in einer ImageList gespeichert.

    Vielen Dank schon mal Corekiter

    • Typ geändert Ciprian Bogdan Montag, 3. Februar 2014 17:15 keine Rückmeldung des Fragestellenden
    Sonntag, 19. Januar 2014 15:40

Alle Antworten

  • Hallo,
    willst du die Bilder in verschiedene PictureBoxen laden oder alle Bilder aneinander fügen und in einet PictureBox anzeigen?

    Das Erste ist einfacher zu realisieren. Merke dir hierzu einfach wie viele Bilder du schon hinzugefügt hast und entscheide somit welche PictureBox du als nächstes befüllst:

    int index = 0;
    
    void SetImage(Image img)
    {
      switch(index)
      {
        case 0: pictureBox1.Image = img; break;//Erster PB das Bild zuweisen
        case 1: pictureBox2.Image = img; break;//2. PB das Bild zuweisen
        //usw.
      }
      ++index;//Index erhöhen für nächstes Bild
    }
    Im Click-Eventhandler des Buttons musst du somit nurnoch SetImage(imgList.Images[index]); aufrufen.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 19. Januar 2014 16:43
    Moderator
  • Vielen Dank

    Ich habe bloß das Problem, dass wenn ich dann den zweiten Button drücke eine Fehlermeldung bekomme, beim ersten Button, egal welchen ich drücke, funktioniert es noch!

    int index = 0;
    
            void SetImage(Image img)
            {
                switch (index)
                {
                    case 0: pictureBox1.Image = img; break;//Erster PB das Bild zuweisen
                    case 1: pictureBox2.Image = img; break;//2. PB das Bild zuweisen
                    case 2: pictureBox3.Image = img; break;
                }
                ++index;//Index erhöhen für nächstes Bild
            }
    
            private void pictureBox_note1_Click(object sender, EventArgs e)
            {
                //pictureBox_NotenAnzeige.Image = new Bitmap(c Note1); 
                //pictureBox1.Image = imageList1.Images[0];
    
                string soundfile = @"C:\ton1.wav"; 
                var sound = new System.Media.SoundPlayer(soundfile);                        //hier kommt die Sound datei hin
                sound.Play();
    
                SetImage(imageList1.Images[index]); //zeigt foto an - ist mit der Methode void SetImage(Image img) verbunden
            }
    
            private void pictureBox_Note2_Click(object sender, EventArgs e)
            {
                //pictureBox_PBsammlung.Image = imageList2.Images[0];
    
                SetImage(imageList2.Images[index]);
            }
    
            private void pictureBox_Note3_Click(object sender, EventArgs e)
            {
                //pictureBox_PBsammlung.Image = imageList3.Images[0];
    
                SetImage(imageList3.Images[index]);
            }
    
            private void pictureBox_Note4_Click(object sender, EventArgs e)
            {
                //pictureBox_PBsammlung.Image = imageList4.Images[0];
    
                SetImage(imageList4.Images[index]);
            }

    Sonntag, 19. Januar 2014 17:13
  • eine Fehlermeldung bekomme

    End was für eine? Bitte in Zukunft eine exakte Beschreibung mit StackTrace und Fehlertyp.

    Warum hast du jetzt mehrere ImageList's? Ich habe es so verstanden, das du eine Liste hast, die alle Bilder enthält. Wenn dagegen jede Liste nur ein Bild enthält, musst du immer das 1. Elemente abrufen.

    SetImage(imgList[0]);

    Wenn deine ImageList aber alle nur ein Bild haben, macht es als Liste keinen Sinn mehr.

    Du kannst übrigens für mehrere Events den selben Eventhandler markieren. Markiere dazu alle Pictureboxen und gehe Ins Eigenschaftenfenster. Dort kannst du dann für alle Controls den selben Handler für das Click-Event angeben. So dachte ich es auch ursprünglich. Das geht natürlich nur, wenn alle Bilder in einer ImageList sind.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 19. Januar 2014 17:21
    Moderator
  • Ich brauche mehrere imageListen weil die Bilder verschieden groß sind und man nur eine Bildgröße bei den Listen eistellen kann. Das mit dem Handler geht auch nicht weil jeder Button noch einen eigenden Sound beim klicken bekommen soll.

    Hier die Fehlermeldung die kam als ich das erste von dir eingefügt hatte.(das war ja auch schon eingroßer Fortschritt auser, dass beim zweiten klicken eines Buttons die Fehlermeldung kam:

    Eine nicht behandelte Ausnahme des Typs

    "System.ArgumentOutOfRangeException" ist in System.Windows.Forms.dll

    aufgetreten

    Zusätliche Information: InvalidArgument = Value mit Wert 1 für index ungültig

    Das mit deinem SetImage(imageList1[0]); geht auch nicht, da kommt die fehlermeldung :

    1 Indizierung mit[]kann nicht auf einen Ausdruck vom typ "System.Windows.Forms.ImageList" angewendet werden

    Was soll ich den jetzt mach ?


    Sonntag, 19. Januar 2014 18:08
  • Du musst den Index natürlich auf die Liste der Bilder beziehen:
    SetImage(imgList.Images[0]);


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 19. Januar 2014 19:11
    Moderator
  • Also soll ich alle bilder in eine imageList tuhen ?

    gibt es da nicht eine möglichkeit, dass ich für jedes Bild ein Liste habe?

    Sonntag, 19. Januar 2014 19:33
  • Hab ich doch geschrieben!?
    Nehme einfach den Code aus deiner ersten Antwort und tausche jedes .Images[index] gegen .Images[0] aus.

    Ich bin davon ausgegangen das du eine ImageList hast, welche in etwa so aussieht:

    Du hast aber für jedes Bild eine eigene ImageList. Also musst du immer das erste (Index 0) Bild wählen.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 19. Januar 2014 19:43
    Moderator
  • Hi Corekiter,

                     

    Ist Deine Situation eigentlich abgeklärt ? Können wir den Thread schließen? Wenn ja - bitte markiere die hilfreichen Beiträge "als Antwort".

     

    Viele Grüße,

    Ciprian


    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Dienstag, 21. Januar 2014 15:08
  • *****************************************************************************************************

    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    *****************************************************************************************************


    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Montag, 3. Februar 2014 17:15