martes, junio 28, 2005

[C#]Usando Recursos de otra dll

Bueno, para poder usar recursos (resources) como texto o imagenes de otra dll. Vamos a hacer lo siguiente:
Hablo suponiendo que tenes el VS.NET. Crea dos proyectos, uno va a ser el que lleva los resources y el otro el que va lodear la dll de los recousrces (Va, en realidad no hace un load de la dll, le saca los recursos sin lodearla, que es la idea). En mi caso el proyecto que tiene los recursos se llama "Resor" y el otro "TestResources".
En "Resor" creo una clase boba Res.cs. Despues en el proyecto pongo "agregar elemento existente", agrego un arhcivo de imagen. Luego, selecciono ese archivo, y entro en las "propiedades" del mismo. Y donde dice "Acción de Generacion" seleciono "Recuros Incrustado".

Bueno ahora en "TestResources" quiero lodear la imagen de la dll "Resor.dll", para eso en cree un fromulario, y en el load del formulario pongo:

ResourceManager rm = new ResourceManager("Resor.images.Res2", Assembly.GetAssembly(typeof(Resor.Res)));
textB.Text=rm.GetString("chau");
Assembly a= Assembly.GetAssembly(typeof(Resor.Res));
//string[] n=a.GetManifestResourceNames();
pBox.Image=Bitmap.FromStream(a.GetManifestResourceStream("Resor.images.super.gif")) as Bitmap;
pBox2.Image=Bitmap.FromStream( a.GetManifestResourceStream("Resor.homerbig.gif")) as Bitmap;


en la primer linea loadeo los strings del archivo de recursos, para crear un arhcivo de recursos seleciono el proyecto, y pongo "agregar" y despues "archivo de recursos". Despues lo modifico y le pongo todos los strings que quiero.

En la linea 3, Assembly.GetAssembly(typeof(Resor.Res)); , seleciono el assembly que cumple con el typeof que le puse en mi caso "Resor.Res", donde Resor es el namespace y Res es la clase boba que creamos. Despues pongo esa imagen en mi picterbox asi: pBox.Image=Bitmap.FromStream( a.GetManifestResourceStream("Resor.images.super.gif")) as Bitmap;

Adjunto les dejo el codigo y el binario.

No hay comentarios.: