使标签动画化

本文关键字:动画 标签 | 更新日期: 2023-09-27 18:16:30

我正在尝试在WPF应用程序中动画标签。标签是通过编程(和动态)方式创建的,所以它不是在XAML中定义的,而是在c#代码中创建的。

动画故事

标签出现在窗口的底部。标签的位置应该低于窗口,这样用户一开始就看不到它。然后,标签向上移动(像滑动一样),并在到达窗口顶部之前淡出。

我做了什么

我已经在另一个项目中实现了这个行为。这次我想用WPF,它应该会表现得更好。

到目前为止,我已经看到应该有多种方法来做到这一点。从DoubleAnimation开始,然后是PathAnimationVectorAnimation(最后一个我还没有测试成功)。 <<p> 遇到的问题/strong>

动画与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);

就像我说的,我已经找到了多种方法似乎可以达到同样的行为。我可以用哪一个来做这个。我仍然需要在窗口的顶部做淡出,但是这个动画比移动更容易做到。

使标签动画化

动画很好。您的标签正在调整大小的原因是因为您正在将其添加到网格中。如果你想让你的标签有一个固定的高度,然后设置它的height或MinHeight属性