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

C# 中的浮动、可折叠透明窗口

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.29/5 (16投票s)

2005年3月4日

1分钟阅读

viewsIcon

103912

downloadIcon

3871

如何使用 NativeWindow 类在 C# 中创建浮动、可折叠透明窗体

Demo image

引言

使用 Windows Forms 非常棒,框架和 Visual Studio 提供的所有功能让工作变得非常愉快。但时不时地,程序员的生活中会遇到挑战。几个月前,当我正在开发一个用户控件时,就发生了这种情况,我希望能够在设计时向用户呈现一个比 Visual Studio 中包含的更合适的上下文菜单。因此,一个可以弹出的窗口的想法出现了,这就是浮动原生窗口的由来。

使用代码

代码非常简单明了。有一个名为 FloatingWindow 的类声明在 Olvio.FloatingWindow.dll 库中,解决方案还包含一个测试用例来演示该工具。

这是用于显示窗口的代码

private void button1_Click(object sender, System.EventArgs e) 
{ 
 Olvio.Windows.Forms.AnimateMode anim = (Olvio.Windows.Forms.AnimateMode)
                        Enum.Parse(typeof(Olvio.Windows.Forms.AnimateMode), 
                                   this.comboBox1.Text, true); 
 fw.ShowAnimate(fw.Location.X, fw.Location.Y, anim);
}

如您所见,FloatingWindow 可以使用 10 种动画模式之一显示

public enum AnimateMode 
{ 
  SlideRightToLeft, 
  SlideLeftToRight, 
  SlideTopToBottom, 
  SlideBottmToTop, 
  RollRightToLeft, 
  RollLeftToRight, 
  RollTopToBottom, RollBottmToTop, 
  Blend, 
  ExpandCollapse
}

测试项目实际上创建了一个继承自 FloatingWindow 的窗口,以演示通过重写 PerformPaint 方法进行自定义绘制的能力。

此外,演示还展示了如何在运行时修改 alpha 混合属性。为此,测试项目显示了一个 NumericUpDown 控件。

该窗口还显示一个标题栏、半透明阴影、最小化/最大化按钮和一个关闭按钮。此外,可以使用右下角的调整柄调整窗口大小。

历史

版本 1.0 - 首次发布。
已知错误

  • 使用动画隐藏会产生奇怪的闪烁
C# 中的浮动、可折叠透明窗口 - CodeProject - 代码之家
© . All rights reserved.