Abhinaba Basu's blog post Animation and Text in System tray using C# giải thích.
Nó đi xuống đến:
- làm một loạt các biểu tượng mỗi trong số đó đại diện cho một khung hình ảnh động.
- chuyển đổi các biểu tượng trong khay trên các sự kiện hẹn giờ
- tạo dải bitmap. Mỗi khung là pixel 16x16
- sử dụng SysTray.cs
ví dụ
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
sử dụng đoạn mã sau để tạo ra các khung hình ảnh động
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());
}
}
Để animate khung StartAnimation
bắt đầu một giờ và trong giờ các biểu tượng được thay đổi để animate toàn bộ chuỗi .
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++;
}
....
}
Sử dụng SysTray
Tạo và dây lên thực đơn của bạn
ContextMenu m_menu = new ContextMenu();
m_menu.MenuItems.Add(0, new MenuItem("Show",new
System.EventHandler(Show_Click)));
Nhận một biểu tượng bạn muốn hiển thị tĩnh trong khay.
Tạo một đối tượng SysTray với tất cả các thông tin cần thiết
m_sysTray = new SysTray("Right click for context menu",
new Icon(GetType(),"TrayIcon.ico"), m_menu);
Tạo dải hình ảnh với khung hình ảnh động. Đối với 6 dải khung hình ảnh sẽ có chiều rộng 6 * 16 và chiều cao 16 pixel
Bitmap bmp = new Bitmap("tick.bmp");
// the color from the left bottom pixel will be made transparent
bmp.MakeTransparent();
m_sysTray.SetAnimationClip(bmp);
hoạt hình Bắt đầu cho thấy bao nhiêu lần bạn cần để lặp các hình ảnh động và sự chậm trễ khung
m_sysTray.StartAnimation(150, 5);
Để dừng hoạt ảnh gọi
m_sysTray.StopAnimation();
Đảm bảo kiểm tra các nhận xét trên bài viết đó: "Xấu hổ với tôi: (Có nhiều lỗ hổng trong mã." (http://blogs.msdn.com/b/abhinaba/archive/2005/09/12/animation-and-text-in-system-tray-using-c. aspx # 504147) –