Fragensteller
Mehrere Bilder in ein PictureBox neben einander laden wie?

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
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. -
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]); }
-
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. -
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 ?
-
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. -
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. -
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-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
*****************************************************************************************************
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-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.