类似 Office 2003 的弹出通知器






4.71/5 (57投票s)
一个不错的控件,可以帮助用户注意到你正在试图告诉他们一些事情...
引言
这是一个简单的项目,一个模拟 Microsoft® Outlook® 2003 邮件提醒的控件。
特点
这个控件具有几个特性。其中,你会发现
渐进式显示 - 透明度
类似 MSN Messenger 的弹出窗口(任何大小、颜色等)
另一个示例
这个控件 100% 在代码中绘制,除了 System.Drawing
和 System.Windows.Forms
之外,没有任何其他依赖。
点击“向下箭头”按钮时,可以包含一个 ContextMenuStrip
。
使用代码
该控件由两个基本类组成
- 一个窗体(实际显示的部分)。
- 一个包含所有可在窗体上包含的属性的类。
该类包含两个计时器,一个用于显示/消失动画,另一个(可配置)用于定义弹出窗口在消失之前显示的时间。
这是窗体实际显示的方式
fPopup.Size = Size
fPopup.Opacity = 0
fPopup.Location = _
New Point(Screen.PrimaryScreen.WorkingArea.Right_
- fPopup.Size.Width - 1, _
Screen.PrimaryScreen.WorkingArea.Bottom)
fPopup.Show()
窗体在 Paint
事件中进行绘制。
我使用这些函数来获得一个相似但更浅/更深的颜色。可能存在另一种方法。
Private Function GetDarkerColor(ByVal Color As Color) As Color
Dim clNew As Color
clNew = Drawing.Color.FromArgb(255, DedValueMin0(CInt(Color.R), _
Parent.GradientPower), DedValueMin0(CInt(Color.G), _
Parent.GradientPower), DedValueMin0(CInt(Color.B), _
Parent.GradientPower))
Return clNew
End Function
为了避免闪烁...
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
Me.SetStyle(ControlStyles.ResizeRedraw, True)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)
关注点
没有特别之处,它很不错,很有趣,色彩丰富...就这些了 :)
历史
- 2006 年 3 月 - V 1.0。