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






3.29/5 (16投票s)
2005年3月4日
1分钟阅读

103912

3871
如何使用 NativeWindow 类在 C# 中创建浮动、可折叠透明窗体
引言
使用 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 - 首次发布。
已知错误
- 使用动画隐藏会产生奇怪的闪烁