Bitmap bei Buttonclick-event in picturebox laden
-
Guten Morgen,
da ich nach ner halben Stunde suchen im internet nix gefunden hab, was mir hilft, wende ich mich mal an die community:
ich habe in der Form1.cs ein buttonclickevent. wird dieses aufgerufen, startet eine extrene funktion, welche ein array zurück gibt. danach werden die werte des arrays zu prozentangaben gewandelt und in 5 textboxen ausgegeben.
jetzt möchte ich aber noch in einer picturebox ein bild anzeigen lassen, abhängig von der position des größeten wertes im array.hier mal das buttonclick-event:
private void btn_brain_Click(object sender, EventArgs e) { double[] _brain = new double[5]; double sum = 0; int k = 0, max = 0; _brain = _neuralnetwork.Brain(_Bild); //von absolut in prozentzahlen sum = _brain.Sum(); for (k = 0; k < 5; k++) { _brain[k] = (_brain[k] / sum) * 100; } //Ausgabe der Wahrscheinlichkeiten textBox1.Text = _brain[0].ToString() + " %"; textBox2.Text = _brain[1].ToString() + " %"; textBox3.Text = _brain[2].ToString() + " %"; textBox4.Text = _brain[3].ToString() + " %"; textBox5.Text = _brain[4].ToString() + " %"; //Bildausgabe for (k = 0; k < 5; k++) { if (_brain[k] == _brain.Max()) { max = k; } } switch (max) { case 0: break; case 1: break; case 2: break; case 3: break; case 4: break; } }
in die switch-case abfrage sollte nun die passende bitmap rein. dazu erstmal alle 5 in der form1.cs initialisiert:
Bitmap circle = new Bitmap("circle.bmp"); Bitmap rectangle = new Bitmap("rectangle.bmp"); Bitmap triangle = new Bitmap("triangle.bmp"); Bitmap B = new Bitmap("B.bmp"); Bitmap X = new Bitmap("X.bmp");
hier wird beim compilieren nun aber ein sog. Ausnahmefehler angezeigt. kann es sein, dass die bmp-dateien einfach im falschen ordner sind, wenn ja, welcher ist der richtige? oder hat das einen anderen ursprung?
desweiteren möchte ich wissen, ob ich im buttonclick-event überhaupt direkt auf die picturebox zugreifen kann oder ob ich da erst 5 funktionen für die 5 möglichkeiten machen muss, welche dann auf die picturebox zugreifen.
wenn man dem buttonclick-event ein painteventargs mitgibt, gefällt das dem compiler logischer weise gar nicht gut^^.
-
Azrael89 schrieb:
hier wird beim compilieren nun aber ein sog. Ausnahmefehler angezeigt.
Irgendjemand soll mir mal erklären, wieso die Leute nie die Fehlermeldung bei Supportanfragen mitangeben? Das ist doch sowas von logisch oder nicht?
Azrael89 schrieb:
kann es sein, dass die bmp-dateien einfach im falschen ordner sind, wenn ja, welcher ist der richtige? oder hat das einen anderen ursprung?
Ohne Fehlermeldung können wir dir das nicht sagen. Zudem wissen wir nicht, wo du die Bitmaps denn hingesetzt hast. Tut mir leid, wir sind nur normale Menschen, Drachen und andere Wesen, aber keine Hellseher.
Azrael89 schrieb:
desweiteren möchte ich wissen, ob ich im buttonclick-event überhaupt direkt auf die picturebox zugreifen kann oder ob ich da erst 5 funktionen für die 5 möglichkeiten machen muss, welche dann auf die picturebox zugreifen.
wenn man dem buttonclick-event ein painteventargs mitgibt, gefällt das dem compiler logischer weise gar nicht gut^^.Du musst das Bitmap nur der Property
Image
von PictureBox zuweisen.Grüssli
-
die fehlermeldung zeigt auf das semikolon am befehlsende und sagt:"Ungültiger parameter", hoffe das hilft dir.
und die bitmaps sind im hauptordner gespeichert, da wo auch die solution-datei ist.
-
Azrael89 schrieb:
die fehlermeldung zeigt auf das semikolon am befehlsende und sagt:"Ungültiger parameter", hoffe das hilft dir.
Nein, überhaupt nicht, weil das eine Interpretation von dir ist und nicht die tatsächliche Fehlermeldung. Daher gleich weitere Fragen:
1. Fehlermeldung? Ich dachte, dass du eine Ausnahme erhälst? Was ist es nun, eine Kompilerfehlermeldung oder eine Ausnahme bei der Ausführung?
2. Wenn es eine Ausnahme ist, wird es sicher nicht auf das Semikolon an einem Befehlsende zeigen. Und überhaupt: Welcher Befehl?
3. Egal ob es eine Ausnahme oder einen Kompilerfehler ist, es gibt einen Namen oder Fehlernummer oder sonstwas. Wie lautet dieser? "Ungültiger Parameter" ist nur die Beschreibung.Wie gesagt, am besten die Fehlermeldung angeben und bitte genau sagen, wann diese auftritt. Damit können wir am meisten anfangen. Und wenn du dann noch sagen würdest, auf welcher Zeile im gezeigten Code der Fehler auftritt, wäre das ganz wunderbar.
Grüssli
-
also,
wie im ersten post schon erwähnt, betrifft die fehlermeldung die erste zeile der bitmap initialisierungen:
Bitmap circle = new Bitmap("circle.bmp");
und vermutlich auch die anderen 4, wird ja aber beim ersten fehler schon abgebrochen.
normale fehler erscheinen ja schon unten inner leiste und unterstreichen den code rot. dieser tritt erst auf, wenn man das debuggen startet und heißt wortwörtlich:
Argumentexeption wurde nicht behandelt.
Ungültiger parameter.
Hinweise zur fehlerbehebung:
Für diese Ausnahme die allgemeine Hilfe aufrufen ( daher auch meine bezeichnung als ausnahmefehler^^)
-
Gut, dann wird wohl das hier das Problem sein:
Azrael89 schrieb:
und die bitmaps sind im hauptordner gespeichert, da wo auch die solution-datei ist.
Kopier die Bitmaps ins Verzeichnis der EXE, bzw. könntest du auch Visual Studio sagen, dass es dies für dich tun soll. Dazu gehst du wie folgt vor:
1. Project -> Add Existing Item... (geht auch mit einem Rechtsklick auf das Projekt im Solution Explorer, dann auf "add" und dann "Existing Item...")
2. Wähle die korrekte Endung aus oder "all files" und wähle dein Bild aus.
3. Klicke auf "add"
4. Im Solution Explorer erscheint nun das Bild. Darauf nun einen Rechtsklick und Properties auswählen.
5. In den Eigenschaften gibt es unter der Kategorie Advanced eine Option "Copy to Output Directory". Wähle nach deinen Bedürfnissen "Copy if newer" oder "Copy always" aus.Grüssli
-
coll, funktioniert super.
seltsam ist nur, dass es, wenn ich ein bild so eingefügt hab, bei den restlichen auch nicht mehr meckert
-
Steck die Bilder einfach in die Ressourcen Datei
Projektmappen-Explorer Properties->Resources.resx Ressource hinzufügen->Vorhandene Datei Eigenschaften Persistence->Eingebettet in resx
und dann über
Properties.Resources.circle
abrufen
LG,
DarkEDIT: ausgebessert
-
Properties.Resources.circle
im englischen nur mit einem 's' -)