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:
