Laden...

Bilder als Resource ?

Erstellt von martin_zi vor 16 Jahren Letzter Beitrag vor 16 Jahren 3.516 Views
M
martin_zi Themenstarter:in
134 Beiträge seit 2006
vor 16 Jahren
Bilder als Resource ?

Hallo

Ich möchte ein paar Bilder in mein Programm einfügen diese sollen dann irgendwann mal dargestellt werden z.B mit DrawImage ...

Nun ist meine Frage wie kann ich diese in meinem Programm hinzufügen ? Ich könnte am Start des Programmes die Bilder laden ja aber ich will nicht das man alle Bilder sofort im Verzeichnis sieht. Also ich möchte sie als Resource einfügen.

Ich habe Versucht das über eine Imagelist zu machen hat aber den Hacken dass die Bilder nicht größer als 256x256 sein können. Ist wohl eher für Icons gedacht.

Wie mache ich das am Besten ?

Gruß

Martin

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo martin_zi,

naja, wie du schon sagst, die Bilder eben als Ressource hinzufügen. Siehe Ressourcen in Anwendungen.

herbivore

M
martin_zi Themenstarter:in
134 Beiträge seit 2006
vor 16 Jahren

Hi

Hmm Ja das hab ich schon aber ich weiß dann nicht wie ich darauf zugreifen kann.
Als "Eingebettete Resource"
Ok das hab ich auch nicht gefragt =)...

Ich habe es mit Bitmap.FromResource versucht aber da weiß ich nicht wirklich welche parameter ich angeben muss ... ich verstehe nicht was der Handler sein soll wenn es direkt im Exe(assembly) ist.

Und ich habe es mit


Assembly asm = Assembly.GetExecutingAssembly();
Stream stream = asm.GetManifestResourceStream("Bitmap1.bmp");
Image image = Bitmap.FromStream(stream);

Allerdings ist dann stream immer "null" ?
Also irgend etwas mache ich da wohl noch falsch.

Gruß

Martin

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo martin_zi,

du musst den Ressourcennamen vollqualifiziert angeben.

herbivore

F
171 Beiträge seit 2006
vor 16 Jahren

Hallo martin_z,

wenn du mit VS arbeitest, dann gebe mal im Code "Properties.Resources. ein". Dann solltest du eigendlich dein Bild auswählen können.

Gruß falangkinjau

M
martin_zi Themenstarter:in
134 Beiträge seit 2006
vor 16 Jahren

Hi

du musst den Ressourcennamen vollqualifiziert angeben.

Sorry nichts verstanden X(
Was ist vollqualifiziert ? Also laut dokus soll ich dann den Vollständigen Pfad angeben ?
Wozu das denn ? Wenn ich dann meine Datei wo anderes hinlege (also ich meine die EXE) dann geht doch nichts mehr. Ausserdem liegt die Datei ja schon als Resource in der EXE...

wenn du mit VS arbeitest, dann gebe mal im Code "Properties.Resources. ein". Dann solltest du eigendlich dein Bild auswählen können.

Nö kann ich nicht da komm ich bloß auf den Resourcemanager.

Vielleich habe ich die datei falsch eingebunden ? Ich hab das so gemacht ...
Rechtsklick auf das Projekt dann Hinzufügen und dann Vorhandenes Element ...
Dann wähle ich die Datei aus und Stelle bei den Eigenschaften bei Buildvorgang auf Eingebettete Ressource.

Macht man das vielleicht doch anderes ?

Gruß
Martin

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo martin_zi,

Was ist vollqualifiziert ?

Der vollständige Name der Ressource.

Also laut dokus soll ich dann den Vollständigen Pfad angeben ?

Nö, jedenfalls nicht im Sinne des Pfades der Datei, die eingebunden wurde. Der spielt keine Rolle.

Wozu das denn ? Wenn ich dann meine Datei wo anderes hinlege (also ich meine die EXE) dann geht doch nichts mehr.

Da die Ressourcen in der EXE-Datei eingebettet sind, kannst du verschieben, wie du willst.

Ausserdem liegt die Datei ja schon als Resource in der EXE...

Eben, also musst du natürlich den (vollständigen) Namen der Ressource, so wie er von VS generiert wurde, und nicht den Name der Datei angeben.

herbivore

M
martin_zi Themenstarter:in
134 Beiträge seit 2006
vor 16 Jahren

Hi

Danke für diese Geduld 😁
Ok jetzt versteh ich schön langsam. Ich hab wohl doch die Resoruce falsch eingebunden.
Mit Properties.Resources.bild1 kann ich jetzt darauf zugreifen.

Trotzdem würde mich noch etwas interessieren.
Woher bekomme ich diesen Namen?
Bei den Resourcen sehe ich die Bilder drinnen unter dem Namen bild1 - bild3
Aber wo ist der vollständigen Name ?

Gruß
Martin

M
110 Beiträge seit 2007
vor 16 Jahren

Schau Dir den Quellcode an.

Es wird mit einem ResourceManager gearbeitet.

Die generierte Klasse macht nichts anderes als einen Wrapper zu schreiben.

Gruss

Mirko

Mappen statt hacken mit Invist , dem .NET O/R Mapper - Code Generator