Bilder mit im Projekt Kompilieren in exe oder dll

Fridulin

Erfahrenes Mitglied
Hallo Leute,

ich habe mal eine Frage. In meinem Programm habe ich mehrerer PictureBoxen die ich Dynamisch mit ca. 15 Bilder Füllen muß. Bis jetzt habe ich die Bilder in einem extra Ordner hinzugefügt, funktioniert auch tadelos. Nur mir währe es lieber wenn ich die mit Kompilieren könnte und in der exe oder in einer extra dll hinzufügen kann.

Über einen Vorschlag / Idee währe ich sehr Dankbar
Liebe Grüße
Fridulin

PS: Ich Programmiere mit SharpDevelope
 

Norbert Eder

Erfahrenes Mitglied
Hallo. Eine ImageList verwenden, die Grafiken dort einbinden und darauf zugreifen. Das wars dann im Grunde auch schon wieder.
 

Fridulin

Erfahrenes Mitglied
Hallo,

alles klaro werde mich einer ImageList mal versuchen "schlauer" zu machen.

Viele Grüße und vielen Dank.
Fridulin
 

Nico Graichen

Erfahrenes Mitglied
Oder, falls du unter .NET 2.0 entwickelst:
Die Bilder einfach in die Resourcen packen und darüber ansprechen

geht zwar glaub ich auch unter .NET 1(.1), ist dann aber nicht so einfach
 

Fridulin

Erfahrenes Mitglied
Hi,

danke für deine Antwort, aber ich denke die ImageList langt mir. Ich muß nur noch herausbekommen wie ich von dort ein Bild in einer PictureBox bekomme.

Viele Grüße
Fridulin
 

Fridulin

Erfahrenes Mitglied
Hi,

ich bin es noch einmal. Vielleicht kann mir ja einer sagen, wie genau ich jetzt ein Bild aus der Imagelist bekomme. Ambesten mit den Dateinamen die das Bild vorher in der Imagelist hatte.

Vielen Dank und Viele Grüße
Fridulin

--- Edit ---

Also wenn ich so ein Bild herausshohle:
Code:
pb_vorher1_m.Image = imageList1.Images[1];
Dann ist es ganz klein und kaum zu erkennen ín der Picture Box.

Viele Grüße
Fridulin

--- Edit 2---

Ich habe es geschafft.
Code:
imageList1.ImageSize = new System.Drawing.Size(42, 42);
pb_vorher1_m.Image = imageList1.Images[1];
Dann hat es wieder die normale Größe. Aber nach dem alten Dateinamen kann man wohl nicht mehr suchen, wenn ich mich nicht irre. Oder?

Viele Grüße und Vielen Dak
Fridulin
 
Zuletzt bearbeitet:

Fridulin

Erfahrenes Mitglied
Hi,

Mir ist aufgefallen, daß er garkeine gifs in einer ImageList wiedergeben kann. Es ist dann ein Standbild. Kann man das Irgendwie umgehen?
Mein voriger Post "imageList1.ImageSize = new System.Drawing.Size(42, 42);" also irgendwie Funktioniert es mal ja und mal ne. Einmal hat es funktioniert und nun immer nicht mehr. Ich habe schon ein PC neustart gemacht, ich dachte vielleicht sollte SharpDevelope mal ganz aus dem Speicher raus. Aber das hielf auch nichts.

Also wenn jemand eine Idee hat, währe es sehr nett wenn Ihr die mir Postet

Viele Grüße und vielen Dank
Fridulin

--- Edit ---
Das Problem mit den ImageSize (imageList1.ImageSize = new System.Drawing.Size(42, 42);" ) habe ich gelöst. Man kann das auch einfach über GUI bei SharpDevelope einstellen, danach noch die Farbtiefe und das Bild sieht gut aus, nur eben ist es jetzt kein gif Bild mehr und bewegt sich dementsprechend nicht mehr.

Weiß jemand eine Lösung? Oder kann man das per Imagelist garnicht machen?

Viele Grüße und eine gute Nacht wünsche ich allen
Fridulin
 
Zuletzt bearbeitet:

Norbert Eder

Erfahrenes Mitglied
Servus,

In Imagelisten kannst du nur gleich große Grafiken reinstopfen. Sorry, dass ich das nicht gleich erwähnt habe.

Eine Möglichkeit, die im Vegleich mit den Ressource-Files wesentlich besser ist (meiner Meinung nach) und von der Komplexität her auch nicht viel schwieriger ist:

Bau dir einfach eine Assembly in welche du alle Grafiken, die du brauchst, als eingebundene Ressourcen reinstopfst. Diese können dann natürlich unterschiedlich groß sein, unterschiedlichste Dateitypen etc. Der Vorteil dabei: Du musst - wenn sich beispielsweise eine Grafik ändert - nur diese DLL austauschen und nicht neu kompilieren. Bei den Ressource-Files müsstest du neu kompilieren.

Wie kommst du dann an deine Grafiken? Ganz einfach. Du guckst dir einfach den CodeProject-Artikel von mir zu diesem Thema an ;-)

Link: Working with Embedded Data
 

Fridulin

Erfahrenes Mitglied
Hi,

danke für deine Antwort. Also in meinem Fall sind die Bilder alle gleich groß und sind alle vom GIF dateityp her. Nur eben wenn ich sie in einer Imagelist reintue, sind es keine gif Bilder mehr und bewegen sich nicht mehr.

Danke für deine andere Variante und in dieser Variante können sich die Gif Bilder auch bewegen?
Ich werde mir deinen Artikel mal zur gemüte führen. Auch wenn ich noch nicht so ganz verstehe, was die XML Datei damit zu tun hat bzw. was ich in ihr reinschreiben muß. Ich werde dein Projekt gleich mal kompilieren und so es mir zur gemüte führen und hoffen das ich das verstehe.

Viele Grüße und herzlichen Dank
Fridulin
 

Norbert Eder

Erfahrenes Mitglied
Vorsicht. Die XML-Datei musst du nicht berücksichtigen. In dem Artikel wird gezeigt, wie du unterschiedliche Ressourcen aus einer Assembly auslesen kannst. Darunter eben ein XMl-File und auch Grafiken. Und nur diesen Teil brauchst du.

Um Reflection (dazu gibts via Google einiges zu finden) kommst du dabei halt nicht herum.

Die ImageList wandelt das übergebene Picture in ein BMP um (wenns mich nicht täuscht) und dabei geht natürlich die Animation verloren, weil ein BMP dieses "Feature" nicht kann.

Ich bin mir auch nicht sicher, ob beispielsweise ein PictureBox überhaupt Animated Gifs darstellen kann (also animiert). Ich denke aber nicht. Kann ich aber nicht 100%ig sagen, da ich die User davon verschone. Einen interessanten Artikel findest du auf CodeProject. Da gibts ein AnimatedIcon-Control, welches dir weiterhelfen sollte.