我有一个无边框的表单,我使用 AnimateWindow() 方法来创建用于打开、关闭等我的表单的动画。我使用这段代码:
[Flags]
enum AnimateWindowFlags
{
AW_HOR_POSITIVE = 0x0000000
AW_HOR_NEGATIVE = 0x00000002,
AW_VER_POSITIVE = 0x00000004,
AW_VER_NEGATIVE = 0x00000008,
AW_CENTER = 0x00000010,
AW_HIDE = 0x00010000,
AW_ACTIVATE = 0x00020000,
AW_SLIDE = 0x00040000,
AW_BLEND = 0x00080000
}
[DllImport("user32.dll")]
static extern bool AnimateWindow(IntPtr hWnd, int time, AnimateWindowFlags flags);
在关闭表单时,此代码似乎有效:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
AnimateWindow(this.Handle, 100, AnimateWindowFlags.AW_BLEND | AnimateWindowFlags.AW_HIDE);
}
但是,当使用此代码打开表单时:
private void Form1_Load(object sender, EventArgs e)
{
AnimateWindow(this.Handle, 100, AnimateWindowFlags.AW_BLEND);
}
似乎什么也没有发生。在做了一些猜测和测试之后,我发现使用 AnimateWindow() 方法使表单淡出是可行的,但是使用它使表单淡入并没有做任何事情(不管time
参数如何)。
有任何想法吗?