.NET Framework - Menu dinamico con imagenes de archivo de recursos

Asked By Jamaf on 27-Nov-09 04:49 PM
Amigos,

Estoy trabajando con VB 2008 profesional

Tengo unas imagenes en un archivo de recursos los cuales utilizo en
toda mi aplicacion, estoy cargando un menu dinamicamente y deso q
algunos items utilicen algunas de esas imagenes, para buscando en
internet encontre este codigo.

Las imagenes que voy a utilizar en el menu los he puesto como recurso
incrustado, pero solo me carga un item con una imagen, el resto se cae
en esta linea (Dim oStream As Stream = Assembly.GetExecutingAssembly
().GetManifestResourceStream(sRutaImagen)), he revisado y todas las
imagenes estan como recuros incrustado, pero no salen excepto una y si
pongo esa misma imagen en el resto de items si sale, pero no las
otras, a q creen q se deba ????

el error que me sale es el siguiente:
Value of 'null' is not valid for 'stream'.
at System.Drawing.Bitmap..ctor(Stream stream)
at Presentacion.CArchivoRecursos.LeerImagen(String sImagen)

O si existe otro forma para leer imagenes de una archivo de recursos,
cual seria ???

Pero, al cargarlo solo muestra un item con imagen,

Function LeerImagen(ByVal sImagen As String) As System.Drawing.Image
Dim sRutaImagen As String =
Assembly.GetExecutingAssembly.GetName.Name & "." & sImagen.Trim
Dim oStream As Stream = Assembly.GetExecutingAssembly
().GetManifestResourceStream(sRutaImagen)
Dim oImagen As System.Drawing.Image

Try
oImagen = New Bitmap(oStream)
Catch ex As Exception
'Throw
End Try

Return oImagen
End Function

Gracias




SoftJaén replied to Jamaf on 29-Nov-09 02:46 AM
Yo obtendr?a una imagen existente como recurso de la siguiente manera:

Imports System.Resources
Imports System.Reflection

Private Function GetImage(ByVal resourceName As String) As Image

' Al nombre del ensamblado, le a?adimos la palabra Resources.
Dim assemblyName As String = _
Assembly.GetExecutingAssembly.GetName.Name & ".Resources"

' Accedemos a los recursos del ensamblado.
'
Dim rm As New ResourceManager( _
assemblyName, Me.GetType().Assembly)

Try
' Devolvemos la imagen.
'
Return DirectCast(rm.GetObject(resourceName),
System.Drawing.Image)

Catch ex As Exception
Return Nothing

End Try

End Function

Ahora, si el archivo de recurso se llama Image23, obtendr?a un objeto Image
de la siguiente manera:

Dim img As Image = GetImage("Image23")

Un saludo

--
Enrique Mart?nez
[MS MVP - VB]

Nota informativa: La informaci?n contenida en este mensaje, as? como el
c?digo fuente incluido en el mismo, se proporciona ?COMO EST??, sin
garant?as de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en pr?ctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
SoftJaén replied to SoftJaén on 29-Nov-09 03:07 AM
Donde digo


quiero decir

Al ?Espacio de nombres de la ra?z del ensamblado? le a?adimos la palabra
Resources. Es decir, mientras que el nombre del ensamblado y el del su
espacio de nombres de la ra?z sean el mismo (WindowsApplication1), no vas a
tener problemas, pero si son distintos, entonces tienes que especificar el
nombre del espacio de nombre de la ra?z.

En las propiedades del proyecto, pesta?a Aplicaci?n, podr?s observar tanto
el nombre del ensamblado como el del espacio de nombres de la ra?z.

--
Enrique Mart?nez
[MS MVP - VB]

Nota informativa: La informaci?n contenida en este mensaje, as? como el
c?digo fuente incluido en el mismo, se proporciona ?COMO EST??, sin
garant?as de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en pr?ctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.