我正在尝试在WPF应用程序中设置标签的动画。标签以编程方式(和动态方式)创建,因此它不是在XAML中定义的,而是在C#代码中创建的。
动画故事
标签显示在窗口底部。标签应位于窗口下方,因此用户最初无法看到它。然后标签向上移动(如滑动)并在到达窗口顶部之前淡出。
我做了什么
我已经在其他项目中实现了这种行为。这次我想使用性能更好的WPF。
到目前为止,我已经看到应该有多种方法来做到这一点。以DoubleAnimation
开头,以PathAnimation
和VectorAnimation
开头(最后一个我没有成功测试过)。
遇到问题
动画效果很好DoubleAnimation
,但是有一个问题:当我调整窗口大小时,标签也会调整大小(类似于Winforms中的锚点)。当我使窗口变小时,标签也会变小,直到它完全消失。此效果仅在标签的高度发生。我添加了添加标签的代码段。也许你发现了一些错误。还应该有更好的方法来实现这一点(我个人觉得它非常难看)。
Label lbl = new Label()
{
Content = "Test",
FontSize = 36,
Foreground = new SolidColorBrush(Colors.Red),
Background = new SolidColorBrush(Colors.Black),
HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center,
VerticalAlignment = System.Windows.VerticalAlignment.Top
};
lbl.Margin = new Thickness(0, this.MainGrid.ActualHeight + lbl.ActualHeight, 0, 0);
this.MainGrid.Children.Add(lbl);
UpdateLayout();
Transform myTransform = new TranslateTransform();
lbl.RenderTransform = myTransform;
DoubleAnimation AnimationY = new DoubleAnimation((this.MainGrid.ActualHeight + 20) * -1, TimeSpan.FromSeconds(4));
myTransform.BeginAnimation(TranslateTransform.YProperty, AnimationY);
问题
正如我所说,我发现多种方式似乎可以实现相同的行为。我可以用哪一个来做这个。我仍然需要在窗口顶部进行淡出,但与动作相比,这个动画更容易做到。