如何使用 c# 使用动画窗口函数的滑动效果显示和隐藏表单



我正在为我的应用程序使用Windows表单。我正在单击面板加载另一个表单。现在我想展示打开和关闭表单的滑动效果。我能够通过重载表单的 OnLoad 事件在表单从右向左打开时打开时添加负面滑动效果。但是我无法使用AnimateWindow功能隐藏具有正滑动效果的表单。有什么办法可以做到这一点吗?

这是我用来显示表单的内容:

protected override void OnLoad(System.EventArgs e)
{
  NativeMethods.AnimateWindow(this.Handle, 500, 
                  AW_ACTIVATE | AW_SLIDE | AW_HOR_NEGATIVE);
  base.OnLoad(e);    
}

使用您现有的模式 - OnClosed + AW_HIDE 反向进行。

protected override void OnClosing(CancelEventArgs e)
{
   AnimateWindow(this.Handle, 500, AW_ACTIVATE | AW_SLIDE | AW_HOR_NEGATIVE | AW_HIDE);
   base.OnClosing(e);
}

为什么不简单地使用 Form.Location 属性。

增加或减少它的相对值以实现您想要的滑动动画效果。

这个库也许可以做你想做的事。

来自站点的示例代码,在您的情况下,可以将其放置在 Closing 事件中。

Transition t = new Transition(new TransitionType_EaseInEaseOut(2000));
t.add(pictureBox1, "Left", 300);
t.add(pictureBox1, "Top", 200);
t.run();

完成动画后,可以使用 TransitionCompletedEvent 事件隐藏窗体。(或者,您可以对窗体的 Opacity 属性进行动画处理(

public event EventHandler<Args> TransitionCompletedEvent;

最新更新