如何在WPF中为按钮字体大小添加动画效果?

3

我有一个按钮名为Button1。我想在动画中更改此按钮的字体大小。因此,我在Window_Loaded函数中编写了代码。

 DoubleAnimation da = new DoubleAnimation(0, 25, new Duration(TimeSpan.FromSeconds(3)));
            //da.TargetPropertyType = "Width";            
            da.RepeatBehavior = RepeatBehavior.Forever;
            button1.BeginAnimation(Button.FontSizeProperty, da);

但是我遇到了一个错误-

无法使用'System.Windows.Media.Animation.DoubleAnimation'在'System.Windows.Controls.Button'上动画化'FontSize'属性。详情请参见内部异常。

1)如何动画化按钮字体大小? 2)我需要动画化哪些按钮属性?


1
你能否请阅读内部异常并将其发布在这里...它可能会很有帮助...你懂的... :) - Noctis
我在哪里可以看到InnerException @Noctis? - Sagotharan
从记忆中来说,当你在Visual Studio中遇到异常时,你可以点击“更多细节”,其中一个字段是“内部异常”,你可以切换它以查看更多信息。 - Noctis
“应用于‘FontSize’属性的动画计算出一个当前值为‘0’的值,这不是属性的有效值。” 这是内部异常。无效操作异常。 - Sagotharan
1个回答

6

在XAML中尝试这个:

<Window...>
  <Window.Triggers>
    <EventTrigger RoutedEvent="Window.Loaded">
        <EventTrigger.Actions>
            <BeginStoryboard>
                <Storyboard Duration="00:00:1">
                    <DoubleAnimation Storyboard.TargetName="button1" From="6" To="25" Storyboard.TargetProperty="FontSize"/>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger.Actions>
    </EventTrigger>
  </Window.Triggers>

2) 在按钮中,我需要动画的属性有哪些?

动画的目标不一定是一个 DependencyProperty。所有属性都可以成为动画的目标。尽管标准的动画类并不支持某些类型。

例如 Background。你可以使用 ColorAnimation 来动画 Background.Color,但不能直接动画 Background,因为没有 BrushAnimation。但是你可以为这样的属性实现自定义动画。


先生,您试过这段代码吗?因为在实现这段代码时,我遇到了一个错误。无法将属性“RoutedEvent”中的字符串“Loaded”转换为类型为“System.Windows.RoutedEvent”的对象。RoutedEventConverter 无法从 System.String 进行转换。在标记文件“WpfApplication1;component/window1.xaml”中的对象“System.Windows.EventTrigger”处出现错误。 - Sagotharan
1
你的代码已经运行,请将RoutedEvent="Loaded"更改为RoutedEvent="Window.Loaded"。 - Sagotharan
你知道在按钮中需要动画的属性吗? - Sagotharan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接