it-swarm.com.de

Laden von PictureBox-Bildern aus einer Ressourcendatei mit Pfad (Teil 3)

Ich verstehe, dass diese Frage schon einmal gestellt (und beantwortet) wurde. Keine der Lösungen funktioniert jedoch für mich.

Nachfolgend finden Sie eine Bildschirmaufnahme aller relevanten Teile des Puzzles:

Screenshot http://dinosaur-island.com/PlantPictureBoxScreenCap.jpg

Wie Sie sehen, werden zahlreiche Bitmaps von Pflanzen als Ressourcen in den Ordner "Images" geladen. Es gibt ein Formular mit einer Bildbox namens "PlantPicture". Es gibt eine Zeichenfolge, von der ich weiß, dass sie einen guten Pfad hat (weil ich sie im Debugger überprüft habe):

            PicPath = PicPath+".bmp";

Screenshot http://dinosaur-island.com/PlantDebugger.jpg

Ich habe zahlreiche Möglichkeiten zum Laden, Casting usw. usw. ausprobiert.

21
zetar

Der Pfad sollte ungefähr so ​​aussehen: "Images\a.bmp". (Beachten Sie das Fehlen eines führenden Schrägstrichs und die Schrägstriche sind back Schrägstriche.)

Und dann:

pictureBox1.Image = Image.FromFile(@"Images\a.bmp");

Ich habe es nur versucht, um sicherzugehen, und es funktioniert. Dies ist neben der anderen Antwort, die Sie haben - "immer kopieren".

42
ispiro

Ok ... also müssen Sie zuerst das Bild in Ihr Projekt importieren

1) Wählen Sie das Bildfeld im Formularentwurf aus

2) Öffnen Sie PictureBox-Aufgaben (es ist der kleine Pfeil rechts am Rand der Bildbox)

3) Klicken Sie auf "Bild auswählen ..."

4) Wählen Sie die zweite Option "Projektressourcendatei:" (diese Option erstellt einen Ordner mit dem Namen "Ressourcen", auf den Sie mit Properties.Resources zugreifen können).

5) Klicken Sie auf "Importieren" und wählen Sie Ihr Bild von Ihrem Computer aus (jetzt wird eine Kopie des Bildes mit demselben Namen wie das Bild in dem in Schritt 4 erstellten Ordner "Ressourcen" gesendet).

6) Klicken Sie auf OK

Jetzt befindet sich das Bild in Ihrem Projekt und Sie können es mit dem Befehl Eigenschaften verwenden. Geben Sie einfach diesen Code ein, wenn Sie das Bild in picturebox ändern möchten:

pictureBox1.Image = Properties.Resources.myimage;

Hinweis: myimage stellt den Namen des Bildes dar. Nachdem Sie den Punkt hinter Resources eingegeben haben, wird es in Ihren Optionen Ihre importierte Bilddatei sein

12
Alin Leon

Das hängt von Ihrem Dateipfad ab. Für mich war das aktuelle Verzeichnis [project]\bin\Debug, also musste ich zweimal in den übergeordneten Ordner wechseln.

Image image = Image.FromFile(@"..\..\Pictures\"+text+".png");
this.pictureBox1.Image = image;

Um Ihr aktuelles Verzeichnis zu finden, können Sie ein Dummy-Label namens label2 erstellen und Folgendes schreiben:

this.label2.Text = System.IO.Directory.GetCurrentDirectory();
6
chenjesu

Das Einstellen von "In Ausgabeverzeichnis kopieren" auf "Immer kopieren" oder "Wenn neu, kopieren" kann für Sie hilfreich sein.

Ihr PicPath ist ein relativer Pfad, der zu einem bestimmten Zeitpunkt beim Laden des Bildes in einen absoluten Pfad umgewandelt wird. Höchstwahrscheinlich werden Sie feststellen, dass sich am angegebenen Speicherort keine Bilder befinden, wenn Sie Path.GetFullPath(PicPath) in Debug verwenden.

3
user1064248

Die akzeptierte Antwort hat einen großen Nachteil!
Wenn Sie Ihr Bild auf diese Weise geladen haben, wird das Bild von Ihrer PictureBox gesperrt . Wenn Sie also versuchen, zukünftige Operationen an diesem Bild durchzuführen, Sie erhalten eine Fehlermeldung , die in einer anderen Anwendung verwendet wird!
Dieser Artikel zeigt Lösung in VB

dies ist eine C # -Implementierung

 FileStream fs = new System.IO.FileStream(@"Images\a.bmp", FileMode.Open, FileAccess.Read);
  pictureBox1.Image = Image.FromStream(fs);
  fs.Close();
2
Samy Massoud