Avatar billede gadebarnet Nybegynder
07. december 2004 - 23:01 Der er 10 kommentarer og
1 løsning

recourser i program

Hvis nu at jeg har f.eks nogle billeder og lyde med i min application, hvordan kan jeg så hente den ind?

image_a = Bitmap.FromFile("C:\Documents and Settings\David Dollas\Desktop\wall11.gif")

Sådan ser det ud nu, men det passer jo ikke, hvis en anden bruger skidet.

Jeg har lave en mappe der hedder images under solution og valgt hvert billede som "Embedded Resource" for at den compiler det med, men hvordan får jeg adgang til det så ?
Avatar billede stoffer Nybegynder
08. december 2004 - 00:53 #1
Hejsa. Mht. pathen kan du måske bruger namespacet.. "System.Environment.UserName"  til noget?

Nu kan jeg se du henter billedet fra desktoppen. Er du så sikker på at billederne ligger ved hver enkelt bruger.. eller har du også brug for at løse det?
Avatar billede gadebarnet Nybegynder
08. december 2004 - 08:39 #2
Det er det der er problemet... :)
Altså det med de billeder :)
Avatar billede bernhof Nybegynder
08. december 2004 - 10:29 #3
Benyt følgende funktion:

  Public Function GetEmbeddedPicture(ByVal FileName As String) As Image
    Dim MyAssembly As System.Reflection.Assembly = _
      Me.GetType.Assembly.GetEntryAssembly()

    'Hent namespace:
    Dim MyNamespace As String = MyAssembly.GetName().Name

    'Indlæs billede:
    Dim PictureStream As System.IO.Stream
    PictureStream = MyAssembly.GetManifestResourceStream( _
      MyNamespace & "." & FileName)

    If Not (PictureStream Is Nothing) Then
      Try
        Return Image.FromStream(PictureStream)
      Finally
        PictureStream.Close()
      End Try
    End If

    Return Nothing
  End Function

.. og kald funktionen fx således:

  PictureBox1.BackgroundImage = GetEmbeddedPicture("ditbillede.bmp")

Metoden, hvorpå billedet hentes fra assembly'et, kan i princippet benyttes til at hente al slags embedded data, da vi blot benytter en System.IO.Stream til at hente det.
Avatar billede gadebarnet Nybegynder
08. december 2004 - 10:38 #4
Det prøver jeg
Avatar billede gadebarnet Nybegynder
08. december 2004 - 10:42 #5
Det kommer med en "out of memory"

Har jeg lavet noget forkert?
De billeder er med under mappen images i min solution og har Build Action som Embedded Resource
Avatar billede bernhof Nybegynder
08. december 2004 - 10:52 #6
Hmm .. Out Of Memory .. Det gør den dog ikke på min? På hvilken linje sker fejlen?

Husk, at selvom billederne ligger i en undermappe, skal du ikke angive undermappen i filnavnet. Hvis et billede fx ligger i "images/test.gif", skal du kalde funktionen således:

  PictureBox1.BackgroundImage = GetEmbeddedPicture("test.gif")

Prøv evt. denne funktion i stedet, hvis det stadig ikke virker:

  Public Function GetEmbeddedPicture(ByVal FileName As String) As Bitmap
    Dim MyAssembly As System.Reflection.Assembly = _
      Me.GetType.Assembly.GetEntryAssembly()

    'Hent namespace:
    Dim MyNamespace As String = MyAssembly.GetName().Name

    'Indlæs billede:
    Dim PictureStream As System.IO.Stream
    PictureStream = MyAssembly.GetManifestResourceStream( _
      MyNamespace & "." & FileName)

    If Not (PictureStream Is Nothing) Then
      Try
        Return New Bitmap(PictureStream)
      Finally
        PictureStream.Close()
      End Try
    End If

    Return Nothing
  End Function
Avatar billede bernhof Nybegynder
08. december 2004 - 12:38 #7
Hmm .. fandt denne metode, som lige umiddelbart fungerer lige så godt:

PictureBox1.BackgroundImage = New Bitmap(Me.GetType(), "test.gif")

:)
Avatar billede bernhof Nybegynder
08. december 2004 - 12:38 #8
Hvor "test.gif" er navnet på dit embedded bitmap
Avatar billede gadebarnet Nybegynder
08. december 2004 - 14:36 #9
point.... og tak
Avatar billede gadebarnet Nybegynder
08. december 2004 - 14:36 #10
ahh, du har fået point for denne her... kan du hjælpe med den anden så ?
Avatar billede bernhof Nybegynder
08. december 2004 - 14:45 #11
Ja, jeg vil forsøge :)

Til andre læsere, er det andet spørgsmål at finde på http://www.eksperten.dk/spm/568458
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
Kurser inden for grundlæggende programmering

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