WPF双重动画延迟

时间:2018-09-10 11:21:36

标签: wpf animation opacity

我正在尝试将矩形的不透明度从0更改为1,然后从1更改为0,但是还要在每个步骤上等待2秒。所以我想将2秒设为1,然后在500毫秒内将其更改为0,然后再以不透明度0等待另外2秒,然后在500毫秒内再次将其变为1等等。

我有此代码:

        Storyboard.SetTargetProperty(forwardDoubleAnimation,
            new PropertyPath("(Path.Fill).(SolidColorBrush.Opacity)"));
        Storyboard.SetTargetProperty(reverseDoubleAnimation,
           new PropertyPath("(Path.Fill).(SolidColorBrush.Opacity)"));

        forwardDoubleAnimation.Completed += (sender, args) =>
        {
            Thread.Sleep(2000);
            reverseStoryboard.Begin();
        };

        reverseDoubleAnimation.Completed += (sender, args) =>
        {
            Thread.Sleep(2000);
            forwardStoryboard.Begin();
        };

但是我在reverseStoryboard.Begin()上有一个例外,说我没有为其设置目标属性。

有没有办法使用单个动画来完成设置属性以便等待?

1 个答案:

答案 0 :(得分:-1)

也许这可以为您提供帮助(请根据您的问题更改持续时间)。

<Rectangle Grid.Row="0" x:Name="Rectangle" Fill="Red" Width="500" Height="400">
            <Rectangle.Triggers>
                <EventTrigger RoutedEvent="Loaded">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="Rectangle" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:3" BeginTime="0:0:3" RepeatBehavior="Forever" AutoReverse="True"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Rectangle.Triggers>
        </Rectangle>