AnimateWindow 是一个 Windows API 函数,用于在窗口显示和隐藏时提供动画效果。它是通过 User32.dll 库提供的。AnimateWindow 允许你指定动画的类型、方向和持续时间,从而在窗口显示、隐藏或移动时创建平滑的过渡效果。
使用 AnimateWindow 函数,你需要传递窗口句柄、动画持续时间以及一组标志。这些标志(AnimateWindowFlags 枚举)决定了动画的类型、方向和行为。
[DllImport("user32")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, AnimateWindowFlags dwFlags);
//窗体动画效果枚举
public enum AnimateWindowFlags
{
AW_HOR_POSITIVE = 0x0001,//自左向右显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记
AW_HOR_NEGATIVE = 0x0002,//自右向左显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记
AW_VER_POSITIVE = 0x0004,//自顶向下显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记
AW_VER_NEGATIVE = 0x0008,//自下向上显示窗口,该标记可以在迁移转变动画和滑动动画中应用。应用AW_CENTER标记时忽视该标记该标记
AW_CENTER = 0x0010,//若应用了AW_HIDE标记,则使窗口向内重叠;不然向外扩大
AW_HIDE = 0x10000,//隐蔽窗口
AW_ACTIVE = 0x20000,//激活窗口,在应用了AW_HIDE标记后不要应用这个标记
AW_SLIDE = 0x40000,//应用滑动类型动画结果,默认为迁移转变动画类型,当应用AW_CENTER标记时,这个标记就被忽视
AW_BLEND = 0x80000,//应用淡入淡出结果
}
//在load 方法里添加实现
private void Form_Load(object sender, EventArgs e)
{
//设置显示位置,x,y看不懂的话画图就懂了
int x = Screen.PrimaryScreen.WorkingArea.Width - this.Width - 2;
int y = Screen.PrimaryScreen.WorkingArea.Height - this.Height - 2;
this.Location = new Point(x, y);//设置窗体在屏幕右下角显示
//调用API 实现
AnimateWindow(this.Handle, 1000, AnimateWindowFlags.AW_SLIDE | AnimateWindowFlags.AW_VER_NEGATIVE);
TopMost = true; //窗口置顶,可有可无
}
对了,记得把边框去除,不然可能会影响动画效果
C# 13 实际效果