Modificar dinámicamente el icono de un NotifyIcon
Artículo por Club Developers · 28 agosto 2006
3615 vistas
El objetivo es de poder modificar el NotifyIcon de la aplicación con el fin de, por ejemplo, mostrar un texto en función de diferentes circunstancias. El ejemplo simplemente irá mostrando en el objeto notifyIcon1 los segundos de un objeto DateTime. La procedure es bastante sencilla ya que se trata de trabajar vía un objeto Bitmap para la modificación y convertirlo en Icon para asignarlo a la propiedad notifyIcon1.Icon. Es muy importante no olvidarnos de destruir los iconos en memoria. El código siguiente sólo muestra lo esencial, faltará declarar y instanciar los objetos Font, Brush, Color y StringFormat necesarios
csharp
///<summary> /// Método privado timer1_Tick /// gestión del evento Tick de timer1 ///</summary> private void timer1_Tick(object sender, EventArgs e) { // lanzamos actualización de NotifyIcon1 this.UpdateNotiFyIcon(DateTime.Now.Second.ToString()); } ///<summary> Método privado UpdateNotiFyIcon /// responsable de modificar notifyIcon1 dinámicamente ///</summary> ///<param name="texto">String : texto a mostrar ///</param> private void UpdateNotiFyIcon(String texto) { // redibujado de iconBitmap this.UpdateBitmap(texto); // recuperamos un icono a partir de iconBitmap Icon newIcon = Icon.FromHandle(this.iconBitmap.GetHicon()); // asignamos el nuevo icono de NotifyIcon1 this.notifyIcon1.Icon = newIcon; // liberamos icono newIcon.Dispose(); } ///<summary> Método privado UpdateBitmap /// encargado de redibujar iconBitmap en función de un texto ///</summary> ///<param name="texto">String : texto a mostrar ///</param> private void UpdateBitmap(String texto) { Graphics g = Graphics.FromImage(this.iconBitmap); // asignamos color de fondo g.Clear(this.iconBackColor); // dibujamos el texto g.DrawString (texto, this.iconFont, this.iconForeBrush, 14, 14, this.iconStringFormat); // liberamos objeto gráfico g.Dispose(); }