【问题标题】:WPF Splash Window flip into main windowWPF Splash Window翻转到主窗口
【发布时间】:2013-05-31 17:15:53
【问题描述】:

所以,我一直在寻找一些不同的方法来使控件“翻转”,但似乎没有一种方法能提供我想要做的事情。

我有一个桌面应用程序,它在加载时显示一个启动窗口,然后启动窗口消失并打开主窗口。

我想通过变窄直到消失来关闭启动窗口,然后以相同的效果打开主窗口但相反 - 这样看起来启动窗口会翻转并成为主窗口。我希望它看起来类似于在 Windows 8 Modern UI 视图中打开应用程序的方式。

我见过的所有其他示例都需要显示前后对象,我并不真正想要 - 我只是希望每个窗口执行一半的动画。

有什么想法吗?

【问题讨论】:

  • “前后对象”是什么意思?网格中的两个视觉对象是否共享同一个表面?
  • 您可能想要考虑将ScaleTransform 添加到每个窗口的RenderTransform,然后创建一个故事板,将启动屏幕的缩放从 100% 设置为 0%,然后为真实屏幕设置动画窗口的缩放比例从 0% 到 100%
  • @Garry:在我引用的示例中,对象是两个不同的图像(正面图像和背面图像)。出于我的目的,这两个对象是两个不同的窗口,因此它们不应以任何方式连接 - 启动窗口需要从打开变为窄,主窗口需要从窄变为打开。
  • @Jon:我会调查一下,我可能不正确,但据我了解,缩放是窗口的所有四个边缘?
  • @koresho,在这种情况下,您将在下面选择 Nishant 的答案。他在上面乔恩的回答中描述了一个解决方案。您需要结合这两个答案来完成编码练习。

标签: .net wpf animation


【解决方案1】:

您可能希望考虑将ScaleTransform 添加到每个窗口的RenderTransform,然后创建一个故事板,将启动屏幕的水平缩放从 100% 设置为 0%,然后将真实窗口的水平缩放设置为0% 到 100%。这将提供您正在寻找的收缩/扩展效果,而不会出现在为窗口宽度设置动画时固有的性能和布局问题。

【讨论】:

    【解决方案2】:

    您的问题有答案 - “我只希望每个窗口执行一半的动画”。 如果您有两个不同的 Window 对象,则为启动窗口设置动画以将其宽度缩小为零,然后隐藏/关闭它。然后以零宽度打开主窗口并将其设置为所需大小。 如果您只有一个窗口对象,则跳过“关闭窗口”步骤。 如果你想让我写一个代码示例,请告诉我

    【讨论】:

    • 好吧,这是有道理的。我试图为 width 属性设置动画,但意识到我使用了错误的动画类型。谢谢!
    • 动画宽度可能会导致一些性能问题,以及显示问题,具体取决于内容的布局方式。使用 RenderTransform 会产生更好的结果。
    • @Jon:是的,我看到了,所以我做了一些代码更改,现在我正在按照您的建议通过 RenderTransform 实现缩放。如果您可以添加作为答案,请这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多