An Office 2003-like popup notifier By Nick Wälti
[介绍/特色]
看图说话:
Office 2003新邮件通知的风格:
渐隐渐出: 透明度
可定制为MSN Messsenger风格:
其他风格实例:
该控件完全在代码中完成绘制,不依赖于System.Drawing 和System.Windows.Forms.你可以包含一个ContextMenuStrip,当点击第一个图中"向下"的箭头图标时显示出来.
[使用代码]
该控件有两个基本的类组成:
- 一个 form (会实际显示出来的部分).
- 一个包含所有可在form中包含的属性的类.
类包含两个timers, 一个用来控制渐隐渐出的动画效果,另一个可配置为定义弹出窗口显示多久.下面是一个演示:
fPopup.Size = Size
fPopup.Opacity = 0
fPopup.Location = _
New Point(Screen.PrimaryScreen.WorkingArea.Right_
- fPopup.Size.Width - 1, _
Screen.PrimaryScreen.WorkingArea.Bottom)
fPopup.Show()
form在Paint事件中完成绘制. 笔者使用了一下函数来获取比指定颜色更浅/更深的颜色,但不确定是否有更好的方法.
End Function
为避免闪烁:
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
Me.SetStyle(ControlStyles.ResizeRedraw, True)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
[译者:内容很简洁,因为刚出来,才V1.0,肯定还会有所补充完善,下面摘取一些问题的评论和反馈]
[问题的评论和反馈]
[1]如何为控件实现一个隐藏窗体的方法在PopupNotifier.vb 类中加入:
在form中如此调用:
[2]如何为控件实现一个定渐隐渐出速度的属性
[3]如何实现类似MSN Messenger的同时处理多个提示消息的效果(向上层叠):
写一个PopupNotifierCollection封装多个PopupNotifier,加一个YOrigin属性来控制位置
Popup()会调用PopupNotifier的Popup(),PopupNotifier要做一些改变:
加入Private iOffset As Integer = 0
在Popup()中:
在tmAnimation_Tick()中:
[4]如何隐藏任务栏上的小图标
在New中 加一句ShowInTaskbar = False.[译者:当然也可以定义为一种属性,方便重用]