Avatar billede omen Nybegynder
08. oktober 2003 - 02:53 Der er 13 kommentarer og
1 løsning

Bitmaps i exe/dll

Jeg har en PictureBox, som skal skifte billede, alt efter hvad der sker. Jeg plejer at bruge følgende:

Bitmap nytPic1 = new Bitmap("pic1.bmp")
Bitmap nytPic2 = new Bitmap("pic2.bmp")
og derefter
pictureBox1.Image = nytPic1
pictureBox1.Image = nytPic2

Er det muligt at få de bitmaps indkluderet i selve exe/dll filen, istedet for at loade dem udefra?
Avatar billede thomasandersen Nybegynder
08. oktober 2003 - 08:35 #1
Kunne du ikke have dem i en ImageList?
Avatar billede odegaard Nybegynder
08. oktober 2003 - 09:57 #2
jo da. Hvis du bruger Visual Studio.NET kan du embedded dem i projektet (tilføj dem til projektet, og vælg i properties at de skal embeddes).
Herefter kan de hentes med:
System.IO.StreamReader bitmapStream = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("pic1.bmp"));
Avatar billede omen Nybegynder
08. oktober 2003 - 13:05 #3
Hvordan tilføjer jeg dem? Det eneste jeg umiddelbart kan få øje er 'Add Bitmap', men der skal jeg selv lave dem! Er der en måde at tilføje dem man allerede har?
Avatar billede odegaard Nybegynder
08. oktober 2003 - 14:18 #4
Højreklik på dit projekt i "Solution Explorer" og vælg "Add existing item"
Derefter kan du under "Build Action" i filens properties vælge "Embedded Resource"
Avatar billede omen Nybegynder
08. oktober 2003 - 15:18 #5
Ok, sådan her:
System.IO.StreamReader picDown = new System.IO.StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("xdccsearch-down.bmp"));
pictureBox1.Image = picDown;

Så giver den mig:
Cannot implicitly convert type 'System.IO.StreamReader' to 'System.Drawing.Image'

Mere hjælp, tak :)
Avatar billede odegaard Nybegynder
08. oktober 2003 - 15:48 #6
Nej du kan ikke bare hente en stream over i et billede. De er jo forskellige typer (hvilket fejlmeddelelsen jo også siger). Du må først oprette en bitmap baseret på en stream.
Avatar billede odegaard Nybegynder
08. oktober 2003 - 15:50 #7
Fx.
Bitmap picDown = new Bitmap(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("pic1.bmp"));
Avatar billede omen Nybegynder
08. oktober 2003 - 16:09 #8
Hmm, nej jeg kan ikke finde ud af det :/

Hvis du vil være venlig at tage det fra begyndelsen... hvis vi siger jeg har tilføjet 'pic1.bmp' til mit projekt, og skal bruge den til en MouseDown event, kan du lave koden? Sætter lige point lidt op fordi jeg skal være så besværlig :-)
Avatar billede odegaard Nybegynder
08. oktober 2003 - 16:17 #9
Efter du har valgt "Embedded Resource", kan du tilføje koden:

Bitmap nytPic1 = new Bitmap(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("pic1.bmp"));
pictureBox1.Image = nytPic1;
Avatar billede omen Nybegynder
08. oktober 2003 - 16:35 #10
Det prøvede jeg også før, men så giver den mig flg. exception:

System.ArgumentException: 'null' is not a valid value for 'stream'.
  at System.Drawing.Bitmap..ctor(Stream stream)
  at XDCCSearcher.UserControl1.pictureBox1_MouseDown(Object sender, MouseEventArgs e)
  at System.Windows.Forms.Control.OnMouseDown(MouseEventArgs e)
  at System.Windows.Forms.Control.WmMouseDown(Message& m, MouseButtons button, Int32 clicks)
  at System.Windows.Forms.Control.WndProc(Message& m)
  at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
  at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Avatar billede odegaard Nybegynder
08. oktober 2003 - 16:54 #11
Så hedder din fil vel ikke pic1.bmp ?
Avatar billede omen Nybegynder
08. oktober 2003 - 16:57 #12
Nej nej, den hedder down.bmp, men det HAR jeg lavet om, så flg:
Bitmap picDown = new Bitmap(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("down.bmp"));
pictureBox1.Image = picDown;
Avatar billede odegaard Nybegynder
08. oktober 2003 - 17:31 #13
Hov sorry! Man skal lige have namespace navnet foran:
dvs. "myNamespace.down.bmp"
Avatar billede omen Nybegynder
08. oktober 2003 - 17:53 #14
Perfekt, mange tak ska' du ha'!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester