时间:2021-05-19
在显示或者隐藏窗口的时候,可以利用Windows API中的AnimateWindow函数实现一些特殊的效果。主要的动画类型有四种:滚动、幻灯片、折叠或展开和alpha混合渐变。
窗口动画效果
首先定义动画工具类,引入AnimateWindow函数。
public class WindowsEffects { public const int AW_ACTIVATE = 0x00020000; // 激活窗口。不要在AW_HIDE中使用此值。 public const int AW_BLEND = 0x00080000; // 使用淡入效果。此标志只能在hwnd是顶级窗口时使用。 public const int AW_CENTER = 0x00000010; // 如果使用了AW_HIDE,则使窗口看起来向内折叠;如果没有使用AW_HIDE,则使窗口向外展开。不同的方向标志没有效果。 public const int AW_HIDE = 0x00010000; // 隐藏窗口。默认情况下,窗口会显示出来。 public const int AW_HOR_POSITIVE = 0x00000001;// 使窗口从左到右产生动画效果。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。 public const int AW_HOR_NEGATIVE = 0x00000002;// 从右到左使窗口具有动画效果。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。 public const int AW_SLIDE = 0x00040000;// 使用幻灯片动画。默认情况下,使用滚动动画。当与AW_CENTER一起使用时,这个标志将被忽略。 public const int AW_VER_POSITIVE = 0x00000004; // 从上到下动画窗口。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。 public const int AW_VER_NEGATIVE = 0x00000008; // 从下到上使窗口具有动画效果。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。 [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern int AnimateWindow(IntPtr hwand, int dwTime, int dwFlag); }窗口从左到右展开
Form2 animateForm;private void button1_Click(object sender, EventArgs e){ animateForm = new Form2(); WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_HOR_POSITIVE);}从左上角到右下角展开窗口
private void button2_Click(object sender, EventArgs e){ animateForm = new Form2(); WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_HOR_POSITIVE ^ WindowsEffects.AW_VER_POSITIVE);}从中心展开窗口
private void button3_Click(object sender, EventArgs e){ animateForm = new Form2(); WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_CENTER);}窗口淡入
private void button4_Click(object sender, EventArgs e){ animateForm = new Form2(); WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_BLEND);}窗口淡出
private void button5_Click(object sender, EventArgs e){ animateForm = new Form2(); animateForm.Show(); WindowsEffects.AnimateWindow(animateForm.Handle, 3000, WindowsEffects.AW_HIDE ^ WindowsEffects.AW_BLEND); animateForm.Close();}关于函数的一些介绍
AnimateWindow函数User32.dll中,最低支持到 Windows 2000
参考:https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-animatewindow
dwFlags参数值列表
名称 值 含义 AW_ACTIVATE 0x00020000 激活窗口。不要在AW_HIDE中使用此值。 AW_BLEND 0x00080000 使用淡入效果。此标志只能在hwnd是顶级窗口时使用。 AW_CENTER 0x00000010 如果使用了AW_HIDE,则使窗口看起来向内折叠;如果没有使用AW_HIDE,则使窗口向外展开。不同的方向标志没有效果。 AW_HIDE 0x00010000 隐藏窗口。默认情况下,窗口会显示出来。 AW_HOR_POSITIVE 0x00000001 使窗口从左到右产生动画效果。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。 AW_HOR_NEGATIVE 0x00000002 从右到左使窗口具有动画效果。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。 AW_SLIDE 0x00040000 使用幻灯片动画。默认情况下,使用滚动动画。当与AW_CENTER一起使用时,这个标志将被忽略。 AW_VER_POSITIVE 0x00000004 从上到下动画窗口。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。 AW_VER_NEGATIVE 0x00000008 从下到上使窗口具有动画效果。此标志可用于滚动或幻灯片动画。当与AW_CENTER或AW_BLEND一起使用时,它会被忽略。
如果AnimateWindow方法调用成功则返回非0值,如果调用失败则返回0,即false。在下面的情况中可能会调用失败:
另还需注意以下问题:
以上就是如何用WindowsForm给窗口添加一些简单的动画效果的详细内容,更多关于WindowsForm添加动画效果的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
上篇说了动态创建结点和删除结点的例子,这一篇说一些如何用setInterval和setTimeout做简单的动画。语法皆是window.setTimeout(f
Premiere2018中添加过渡动画效果很简单,我们之前也介绍了一些,下面我们就来看看添加带状滑动过渡效果的教程。软件名称:AdobePremiereProC
PPT2007中绘制的图形想要添加一些强调效果,该怎么给图形添加忽明忽暗自定义动画呢?下面我们就来看看详细的教程。软件名称:PowerPointViewer20
精美的动画效果。网页设计中适时的添加一些精美的动画效果,不但可以提升整个网页的生动性,还能增加网页观感的趣味性。运用PS技术可以在网页设计中设计制作一些体积较小
ppt中想要给图片添加一个动画效果,该怎么添加呢?下面我们就来看看给图片添加动画效果的教程。软件名称:PowerPoint2017简体中文免费完整版软件大小:6