65.9K
CodeProject 正在变化。 阅读更多。
Home

类似 Office 2003 的弹出通知器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (57投票s)

2006 年 3 月 23 日

CPOL

1分钟阅读

viewsIcon

320592

downloadIcon

7056

一个不错的控件,可以帮助用户注意到你正在试图告诉他们一些事情...

引言

这是一个简单的项目,一个模拟 Microsoft® Outlook® 2003 邮件提醒的控件。

特点

这个控件具有几个特性。其中,你会发现

渐进式显示 - 透明度

类似 MSN Messenger 的弹出窗口(任何大小、颜色等)

另一个示例

这个控件 100% 在代码中绘制,除了 System.DrawingSystem.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。
© . All rights reserved.