class PopUpWindowAnimation
{
/// <summary>
/// 窗口打开关闭动画
/// </summary>
/// <param name="hander">窗口句柄</param>
/// <param name="duration">持续时间</param>
/// <param name="effert">效果</param>
/// <returns></returns>
public static bool WindowEffect(IntPtr handle,int duration, Effect effert)
{
bool result = AnimateWindow(handle, duration, (int)effert);
return result;
}
/// <summary>
/// 实现窗口的动画效果
/// </summary>
/// <param name="hwnd">窗口句柄</param>
/// <param name="dwTime">动画持续的时间</param>
/// <param name="dwFlags">动画类型选项</param>
/// <returns></returns>
[DllImport("user32.dll")]
static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
}
/// <summary>
/// 动画效果
/// </summary>
[Flags]
public enum Effect
{
/// <summary>
/// 滑动效果。默认为滚动动画类型,当使用AW_CENTER标志时,这个标志被忽略
/// </summary>
AW_SLIDE = 0X40000,
/// <summary>
/// 激活窗口。在使用AW_HIDE标志后不要使用这个标志
/// </summary>
AW_ACTIVATE = 0X20000,
/// <summary>
/// 使用淡入效果。只有当hWnd为顶层窗口时才可以使用此标志
/// </summary>
AW_BLEND = 0X80000,
/// <summary>
/// 隐藏窗口,默认则显示窗口
/// </summary>
AW_HIDE = 0X10000,
/// <summary>
///若使用AW_HIDE标志,则使窗口向内重叠;若使用AW_HIDE标志,则使窗口向外扩展。
/// </summary>
AW_CENTER = 0X10,
/// <summary>
/// 自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_HOR_POSITIVE = 0X1,
/// <summary>
/// 自右向左显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_HOR_NEGATIVE = 0X2,
/// <summary>
/// 自上向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_VER_POSITIVE = 0X4,
/// <summary>
/// 自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志
/// 被忽略
/// </summary>
AW_VER_NEGATIVE = 0X8
}
通过API函数AnimateWindow实现窗口弹出关闭效果的自定义。