首页 > 解决方案 > 如何制作WPF背景动画循环?

问题描述

我在MainWindow.xaml(使用 Storyboards)中使用了这段代码来制作背景动画循环:

    <Window.Background>
    <VisualBrush Stretch="UniformToFill" AlignmentX="Left" AlignmentY="Top">
        <VisualBrush.Visual>

            <MediaElement Name="bgv" Opacity="1" IsMuted="True" Width="3840" Height="2160" Stretch="None" HorizontalAlignment="Left" VerticalAlignment="Top">
                <MediaElement.Triggers>
                    <EventTrigger RoutedEvent="MediaElement.Loaded">
                        <EventTrigger.Actions>
                            <BeginStoryboard>
                                <Storyboard>

                                    <MediaTimeline Source="SuperRes/matrixX-animation1.mp4" Storyboard.TargetName="bgv" RepeatBehavior="Forever" />

                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger.Actions>
                    </EventTrigger>
                </MediaElement.Triggers>
            </MediaElement>

        </VisualBrush.Visual>
    </VisualBrush>
</Window.Background>

问题是垃圾收集器有时会阻止它循环或将其从窗口中删除。还有其他方法可以制作此视频循环吗?

标签: c#wpfxaml

解决方案


我花了一段时间才找到一个完美的解决方案。这是代码:

XAML:

<MediaElement x:Name="instructionVideo" Width="320" Height="240" Source="Videos/Instructions.mp4" LoadedBehavior="Manual" Loaded="instructionVideo_Loaded" MediaEnded="instructionVideo_MediaEnded" VerticalAlignment="Bottom" HorizontalAlignment="Center" Canvas.Top="40"/>

CS:

private void instructionVideo_Loaded(object sender, RoutedEventArgs e)
    {
        instructionVideo.Play();
    }
    private void instructionVideo_MediaEnded(object sender, RoutedEventArgs e)
    {
      instructionVideo.Position = TimeSpan.FromSeconds(0);
}

学分:

http://jcraane.blogspot.com/2012/03/continuously-looping-video-in-wpf.html


推荐阅读