2010-03-09 5 views
6

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

+0

Blick auf diese Frage http://StackOverflow.com/Questions/154262/Beispiel-Code-Required-for-How-to-access-embedded-net-image-resources-in-c – IordanTanev

Antwort

2

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 :)

+0

Danke. Was passiert, wenn ich "Inhalt" als Build-Aktion belasse? Und bitte - zu welcher Namensliste gehört Assembly? Ich kann es nicht nennen. – Petr

+0

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

+0

Hmm..Ich habe versucht, Assembly zu tippen. aber nichts erschien. – Petr

1

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)

0

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.

+1

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