动画标签

时间:2014-08-05 08:17:34

标签: c# wpf animation

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

动画故事

标签显示在窗口底部。标签应位于窗口下方,因此用户最初无法看到它。然后标签向上移动(如滑动)并在到达窗口顶部之前淡出。

我做了什么

我已经在其他项目中实现了这种行为。这次我想使用性能更好的WPF。

到目前为止,我已经看到应该有多种方法来做到这一点。以DoubleAnimation开头,以PathAnimationVectorAnimation开头(最后一个我没有成功测试过)。

遇到问题

动画效果很好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);

问题

正如我所说,我发现多种方式似乎可以实现相同的行为。我可以用哪一个来做这个。我仍然需要在窗口顶部进行淡出,但与动作相比,这个动画更容易做到。

1 个答案:

答案 0 :(得分:0)

动画很好。标签调整大小的原因是因为您要将其添加到网格中。如果您希望标签具有固定高度,请设置其HeightMinHeight属性。