Abhinaba Basu's blog post Animation and Text in System tray using C# explique.
Il se résume à:
- faire un tableau d'icônes qui représentent chacun un cadre d'animation.
- de créer une bande bitmap. Chaque trame est 16x16 pixels
- d'utilisation SysTray.cs
par exemple,
private void button1_Click(object sender, System.EventArgs e)
{
m_sysTray.StopAnimation();
Bitmap bmp = new Bitmap("tick.bmp");
// the color from the left bottom pixel will be made transparent
bmp.MakeTransparent();
m_sysTray.SetAnimationClip(bmp);
m_sysTray.StartAnimation(150, 5);
}
SetAnimationClip
utilise le code suivant pour créer le cadre d'animation
public void SetAnimationClip (Bitmap bitmapStrip)
{
m_animationIcons = new Icon[bitmapStrip.Width/16];
for (int i = 0; i < m_animationIcons.Length; i++)
{
Rectangle rect = new Rectangle(i*16, 0, 16, 16);
Bitmap bmp = bitmapStrip.Clone(rect, bitmapStrip.PixelFormat);
m_animationIcons[i] = Icon.FromHandle(bmp.GetHicon());
}
}
Pour animer le cadre StartAnimation
démarre une minuterie et la minuterie les icônes sont modifiées pour animer toute la séquence .
public void StartAnimation(int interval, int loopCount)
{
if(m_animationIcons == null)
throw new ApplicationException("Animation clip not set with
SetAnimationClip");
m_loopCount = loopCount;
m_timer.Interval = interval;
m_timer.Start();
}
private void m_timer_Tick(object sender, EventArgs e)
{
if(m_currIndex < m_animationIcons.Length)
{
m_notifyIcon.Icon = m_animationIcons[m_currIndex];
m_currIndex++;
}
....
}
En utilisant SysTray
Créer et câbler votre menu
ContextMenu m_menu = new ContextMenu();
m_menu.MenuItems.Add(0, new MenuItem("Show",new
System.EventHandler(Show_Click)));
Obtenez une icône que vous souhaitez afficher statiquement dans le bac.
Créer un objet avec SysTray toutes les informations nécessaires
m_sysTray = new SysTray("Right click for context menu",
new Icon(GetType(),"TrayIcon.ico"), m_menu);
Créer des bandes d'images avec les images d'animation. Pour 6 bande de cadre l'image aura une largeur de 6 * 16 et hauteur 16 pixels
Bitmap bmp = new Bitmap("tick.bmp");
// the color from the left bottom pixel will be made transparent
bmp.MakeTransparent();
m_sysTray.SetAnimationClip(bmp);
animation de début indiquant combien de fois vous avez besoin pour boucler l'animation et le retard de trame
m_sysTray.StartAnimation(150, 5);
Pour arrêter l'appel d'animation
m_sysTray.StopAnimation();
Assurez-vous de vérifier les commentaires sur cet article: «honte à moi :(Il y a beaucoup de fuites dans le code » (http://blogs.msdn.com/b/abhinaba/archive/2005/09/12/animation-and-text-in-system-tray-using-c. aspx # 504147) –