Imágenes como recursos en los assemblies

Cuando trabajamos con Visual Studio/Sharpdevelop, podemos agregar en un pictureBox una imagen. Lo podemos hacer de 2 maneras (a simple vista): como Project Resource file ó Local Resource.

Ahora bien, otra manera de hacer esto, es añadiendo al proyecto las imágenes y declarándolas como Recursos Embebidos, para eso se podría crear una carpeta. Y después para obtener dichas imagenes utilizariamos un helper que nos retorne los recursos embebidos.

Así es como se está realizando el manejo de imágenes/iconos en Paint.Net. También copié el mismo esquema (y código) para Mono.Sms. Lo bueno del esquema que utiliza Paint.Net es que permite tener imágenes personalizadas dependiendo de la cultura:

Cuando Paint.Net necesita una imagen, lo solicita a la clase PdnResources, y esta hace lo siguiente:

  • Verifica si posse una imagen personalizada según la Cultura, si encuentra la devuelve.
  • Sino, busca dentro del assembly por imagenes embebidas, si encuentra la devuelve.

Al momento de buscar una imagen para asignarla a un pictureBox podemos hacer esto:


pictureBox.Image = PdnResources.GetImage("image.png");

El archivo PdnResources puede encontrarse aquí, y la manera que trata los recursos la considero como una buena práctica.

Mono.Sms contiene todas las imágenes embebidas de esta misma manera. Así se ven los recursos de Mono.Sms con Reflector:

 

Leave a comment

Please be polite and on topic. Your e-mail will never be published.