从托盘中为窗口移动设置动画

时间:2009-09-04 08:47:15

标签: wpf

在我的项目中,我将窗口发送到托盘上。如何为此提供动画效果,即从当前窗口位置到托盘的移动。而且相反,意味着双击托盘中的通知图标,窗口就会出现在前面?

4 个答案:

答案 0 :(得分:1)

我在WPF中做得不多,所以请记住这一点。

似乎这可以通过使用DrawAnimatedRects的Windows API完成,如here所述(值得一读,因为它突出了一些陷阱)

已转换为VB2005 here

你可以构建一些封装了这个功能的东西但是对我来说感觉有些笨拙。另外,我没有尝试直接从WPF项目访问API - 我假设它可能但不能保证它。

接下来最好的建议是调查Windows® API Code Pack for Microsoft® .NET Framework。我还没有机会深入研究这个问题,但它有可能以可管理的方式公开这些功能。

简而言之,看起来包含此功能的其他应用程序通过API自行处理,而不是依赖于框架。

答案 1 :(得分:0)

我发现couple articles可以展示系统托盘的窗口动画,但是他们没有使用WPF,但应该指向正确的方向。

答案 2 :(得分:0)

当双击托盘图标时将窗口设置为视图非常简单,因为您可以简单地创建一个WPF动画或故事板,将窗口从鼠标的当前位置(在托盘图标上方)移动到您想要的位置在屏幕上。

如果你为它添加一个调整大小和不透明度的动画,你应该得到一个不错的结果(但是如果几个动画一起运行的话,可以使用Storyboard。)

将窗口设置为回显到托盘图标的动画有点棘手,因为您不知道它的确切位置,因此您可以将窗口最小化到托盘图标的大致方向并让它在之前淡出它到达那里或任何其他方式。

如果托盘图标在第一次点击打开窗口时也可以保存位置,或者尝试使用Windows API获取实际位置,我不建议这样做。

祝你好运。

答案 3 :(得分:0)

嗯,你的问题的快速回答是不能使用WPF完成。原因是WPF存在于您正在显示的窗口的chrome中,并且您正在尝试为chrome设置动画。

您尝试实现的动画可以完成,但您需要使用Windows API调用才能执行此操作。 Basiclife的建议是一个完美的起点