Isomething’s (No se lo que es, ni lo quiero)

febrero 10, 2009

Recursos incrustados en .NET usando Visual Studio 2005

Muchas veces sucede que necesitamos incluir un set de iconos, imagenes o inclusive algunos archivos en nuestra aplicacion para eso tenemos unas cuantas tecnicas no muy “ortodoxas” que son un dolor de cabeza al momento de hacer el deployment de la aplicacion, pero si usamos el gestor de recursos de Visual Studio 2005 la mayor parte de esos problemas estaran solucionados.

Para acceder al gestor de recursos de Visual Studio tenemos que abrir las propiedades del proyecto:

 

Obteniendo las propiedades del proyecto

Obteniendo las propiedades del proyecto

 

 

 

Una vez que estamos viendo las propiedades de nuestro proyecto, debemos seleccionar el tab vertical “Recursos“:

 

Vista del gestor de recursos

Vista del gestor de recursos

 

 

Visual Studio nos permite gestionar de un modo muy transparente y sencillo casi cualquier tipo de recurso:

  • Strings: cada string puede caracterizarse por un conjunto de {Nombre, Valor, Comentario}.
  • Imagenes: los formatos de imagen soportados son PNG, JPG, BMP, TIF, GIF.
  • Iconos: solo extensiones .ICO
  • Audio: solo archivos .WAV
  • Archivos: cualquier tipo de archivo, sin embargo en general seran tratados como archivos .TXT, si bien es posible seleccionar que se trata de un archivo binario desde las propiedades del recurso.
  • Otros: recursos personalizados caracterizados por Nombre, Tipo, Valor y Comentario.

 

La gran ventaja de esta tecnica es que nos permite emplear los recusos de un modo muy sencillo, como ejemplo voy a mostrar una aplicacion que muestra  un icono animado en el tray bar (en realidad cambia peridicamente el icono que esta mostrando para dar la sensacion de animacion).

Primero agregamos 2 iconos a los recursos de la aplicacion, para esto simplemente arrastramos el archivo de icono hacia el gestor de recursos de VS2005 o bien vamos al menu y seleccionamos “Agregar archivo existente…” , vale aclarar que VS2005 tambien nos permite crear un icono a travez de un editor integrado que posee.

Una vez que tenemos esos iconos en nuestra aplicacion ya podemos usarlos, supongamos que tenemos un Form que dispone de un objeto NotifyIcon y un Timer (ajustado para dispare el evento Tick no muy rapidamente, supongamos un intervalo de 500 ms o mas.)

Nuestro objetivo es que el icono del NotifyIcon cambie en cada periodo de Timer, para esto vamos a escribir el codigo directamente en el handler de Tick del Timer, solo necesitaremos de una variable auxiliar que nos indique que icono estamos mostrando, es este caso podemos usar una variable booleana ya que nuestra animacion va a tener solamente 2 estados, en caso de usar mas iconos para representar la animacion habra que usar algun otro tipo de variable (en general: un entero al que asignamos su valor aumentado uno y le calculamos el modulo de la cantidad de estados que tiene la animacion, status = (status + 1) MOD <cantidad_de_estados>)

El codigo que hara que nuestro icono se muestre animado es simplemente el siguiente:

 

  1 Private m_iconSequence As Boolean = False
  2 
  3 Private Sub TimerRefreshTrayBarIcon_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerRefreshTrayBarIcon.Tick
  4         If (m_iconSequence) Then
  5             NotifyIcon.Icon = My.Resources.application_get
  6         Else
  7             NotifyIcon.Icon = My.Resources.application_put
  8         End If
  9         m_iconSequence = Not m_iconSequence
 10 End Sub

 

La variable m_iconSequence es la que nos indica que icono estamos mostrando (su estado cambia en la linea 9 cada vez que mostramos el icono, cada vez que el timer se vence). Pero vamos a lo importante: para cambiar el icono solo es necesario asignar el valor de Me.Resources.application_get (Cuidado: No confundir con “My) a la propiedad Icon del NotifyIcon, nada mas que eso, podemos olvidarnos por completo de castings, conversiones, cargado del icono desde un archivo, etc. Me.Resources contiene todos los recursos que hayamos agregado en el proyecto, cada recurso se identifica por el nombre que le hayamos asignado en el gestor de recursos (en este caso los iconos se llaman application_get y application_put como se puede ver en la imagen de arriba).

Por ultimo, Visual Studio nos permite crear archivos de recursos “sueltos” que luego utilizaremos segun sea necesario, esto es bastante util para aplicaciones multilinguales donde por ejemplo una image contine un texto, de este modo podremos tener un archivo de recursos para cada leguaje con su imagen especifica.

About these ads

3 comentarios »

  1. Ok, pero aun no lo consigo jeje je
    saludos y gracias por la info

    Comentario por Ioriyagami — mayo 23, 2009 @ 1:47 am

  2. muy buena la info, gracias me sacó de muchas dudas! XD

    Comentario por tatan — julio 26, 2009 @ 10:16 pm

  3. Hola que tal man, tengo unas dudas con respecto a los recursos del proyecto que son las siguientes:
    Incluyo iconos para los menús de mi aplicación en esta carpeta, mi pregunta es: cuando hago su paquete de instalación de mi sistema esos iconos siguen guardados en la carpeta de Resources? la pregunta es porque en sus propiedades de algún icono(esto dentro de propiedades de mi proyecto/Resources)puedo cambiar una que dice Presistence a incrustado en .resx o vinculado en tiempo de ejecución. O solo las agrego ahi y al momento de hacer mi instalador de la aplicación no tendré problemas con que no esten en esa ruta.
    Bueno espero tu respuesta, muchas gracias.

    Comentario por Jonathan — octubre 28, 2009 @ 9:19 pm


RSS feed para los comentarios de esta entrada. TrackBack URI

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

El tema Silver is the New Black. Create a free website or blog at WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: