Ich möchte Folgendes wissen: Ich habe den Ordner "Graphics" in mein Projekt eingefügt und einen BMP darin gesteckt. Jetzt möchte ich das Bild aus meinem Code laden, aber ich kann nicht herausfinden, wie. Ich kenne es einfach mit Ressourcen, aber gibt es einen Weg, ohne das Bild in Ressourcen hinzuzufügen? DankC#: Zugriff auf ein Bild, das zum Projektordner hinzugefügt wurde
Antwort
Ich habe mich auch einmal darüber gewundert, also habe ich es herausgefunden und in eine blog post gelegt. Für Ihr Beispiel sollte es so etwas wie dieses:
var a = Assembly.GetExecutingAssembly(); // Or another Get method if you need to get it from some other assembly
var image = Image
.FromStream(a.GetManifestResourceStream("DefaultNameSpace.Graphics.image.bmp"));
Denken Sie daran, das Bild als eingebettete Ressource zu markieren und des Bildes zu entsorgen, wenn Sie fertig, so dass Sie keine Leckage bekommen :)
Danke. Was passiert, wenn ich "Inhalt" als Build-Aktion belasse? Und bitte - zu welcher Namensliste gehört Assembly? Ich kann es nicht nennen. – Petr
DefaultNamespace ist der Namespace, den Sie in Ihren Projekteinstellungen angegeben haben. Es ist standardmäßig der Name Ihres Projekts. Wenn Sie die Inhaltserstellungsaktion verwenden, denke ich, dass die Datei in Ihr Ausgabeverzeichnis kopiert wird. Wenn Sie das tun, müssten Sie 'Image.FromFile (" pathtoimage.bmp ")' oder etwas ähnliches verwenden. – Svish
Hmm..Ich habe versucht, Assembly zu tippen. aber nichts erschien. – Petr
Um eine Ressource zu erhalten:
myNamespace.Properties.Resources.images.<imagename>
Sie können, dass werfen den Typen Sie benötigen (oder eine Funktion zum Beispiel Fromfile verwenden)
Sie auf den Dateieigenschaften festlegen sollten, die es sein muss, beim Aufbau der Anwendung bereitgestellt:
kopieren Ausgabeverzeichnis: Kopieren Sie immer
Sie können dann mit der Methode Image.FromFile auf die Datei zugreifen. Der Pfad entspricht genau dem Pfad in Ihrem Projekt.
Wenn Sie dies dann tun Es ist keine eingebettete Ressource. Sie können einige schwerwiegende Probleme haben, wenn Sie fehlende Dateien nicht behandeln, wenn Benutzer nur die Exe anstelle des gesamten Ordners kopiert haben. – RvdK
Sie kann ein Bild direkt vom Dateisystem laden
Image img = Image.FromFile ("\ Graphics \ ImageName.bmp");
Die MSDN-Dokumentation ist hier
http://msdn.microsoft.com/en-us/library/system.drawing.image.fromfile.aspx
Offensichtlich müssten Sie das Verzeichnis und den Namen kennen Sie aus geladen werden.
Blick auf diese Frage http://StackOverflow.com/Questions/154262/Beispiel-Code-Required-for-How-to-access-embedded-net-image-resources-in-c – IordanTanev