Blend for Visual Studio 可以以更好、更简单的方式完成此任务,而无需处理大量代码。
这是执行此操作的步骤列表。
Step 1:同时在 Blend for Visual Studio 和 Visual Studio 中打开项目。
Step 2:在 Blend 中,围绕您希望使用它制作动画的所有元素创建一个新的故事板。
我们将其称为“Storyboard1”。
Step 3:现在,打开我们刚刚创建的故事板,单击“+”旁边的小箭头,然后单击下拉菜单中的“复制”。然后,将创建一个名为“Storyboard1_Copy”的新故事板。
Step 4:将此新故事板重命名为您喜欢的名称,例如“Storyboard1_Rev”。
Step 5: 你现在应该已经猜到了。选择复制的故事板,然后从下拉菜单中单击“反转”。
Step 6:现在您已经准备好了两个故事板:一个用于根据需要对某些元素进行动画处理,另一个用于反转动画顺序。就像从 C# 代码调用故事板一样,您可以从相同的代码调用反向故事板,但要遵守一些条件,检查元素是否已经动画化。为此,我使用一个 bool 变量,每次在一组元素上发生某些动画时,其值都会更改(即,如果元素尚未动画,则为 false,如果已动画,则为 true)。
举例说明:
我将创建一个具有简单布局的应用程序。它在屏幕上有一个按钮、一个图像和一个矩形区域。
这个想法是,每当您单击按钮一次时,图像应该最大化,并且当单击按钮两次时图像应该最小化回到原始大小,依此类推。也就是说,每隔一次单击按钮时就会发生反向动画。以下是一些屏幕截图,显示了它是如何发生的:
您可以看到图像的当前状态显示在按钮中。当图像处于初始小尺寸时,它显示“放大”;当图像最大化时,它显示“缩小”。
最后,这是处理按钮点击的 C# 代码:
bool flag = false;
private void Button_Click(object sender, RoutedEventArgs e)
{
if (!flag)
{
Button.Content = "Zoom Out";
Storyboard1.Begin();
flag = true;
}
else
{
Button.Content = "Zoom In";
Storyboard1_Rev.Begin();
flag = false;
}
}
您所要做的就是拥有一个状态标志,该标志显示您希望设置动画的元素的当前状态,并根据标志的值在正向或反向时间轴中为其设置动画。