Лучший способ визуализации переходов в настольном приложении WPF

Я работаю над приложением WPF с огромными проблемами с производительностью. Когда пользователь перемещается между экранами, должна происходить быстрая анимация исчезновения и уменьшения текущего экрана, в то время как следующий экран постепенно исчезает и скользит слева. Это грязно, как ад.

Теперь я наткнулся на EntranceThemeTransitionBehavior ( http://msdn.microsoft.com/EN-US/library/windows/apps/windows.ui.xaml.media.animation.entrancethemetransition.aspx), но я хотел бы узнать о двух вещах не понимаю:

  • Должна ли эта вещь работать намного быстрее?
  • Можно ли использовать его для приложений, не относящихся к Windows Store (просто старое настольное приложение)

Любая лучшая практика / предложения по созданию плавных переходов fade + в WPF?

Сегодня я делаю это с помощью простой раскадровки и анимации непрозрачности. Вот пример:

Когда я запускаю это на 2 экранах параллельно, затухание происходит очень медленно.

    <Grid x:Name="SlideShow" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        <Grid.Resources>
            <Storyboard x:Key="Slide" RepeatBehavior="Forever" Timeline.DesiredFrameRate="30" >

                <DoubleAnimationUsingKeyFrames
                    BeginTime="00:00:7"
                    Storyboard.TargetName="Ad2"
                    Storyboard.TargetProperty="Opacity">

                    <SplineDoubleKeyFrame KeyTime="0:0:0.25" Value="1" />
                </DoubleAnimationUsingKeyFrames>


                <DoubleAnimationUsingKeyFrames
                    BeginTime="00:00:14.75"
                    Storyboard.TargetName="Ad3"
                    Storyboard.TargetProperty="Opacity">
                    <SplineDoubleKeyFrame KeyTime="0:0:0.25" Value="1" />
                </DoubleAnimationUsingKeyFrames>

                <DoubleAnimationUsingKeyFrames
                    BeginTime="00:00:24.25"
                    Storyboard.TargetName="Ad4"
                    Storyboard.TargetProperty="Opacity">
                    <SplineDoubleKeyFrame KeyTime="0:0:0.25" Value="1" />
                </DoubleAnimationUsingKeyFrames>


                <DoubleAnimationUsingKeyFrames
                    BeginTime="00:00:32.75"
                    Storyboard.TargetName="Ad2"
                    Storyboard.TargetProperty="Opacity">
                    <SplineDoubleKeyFrame KeyTime="0:0:0.25" Value="0" />
                </DoubleAnimationUsingKeyFrames>
                <DoubleAnimationUsingKeyFrames
                    BeginTime="00:00:32.75"
                    Storyboard.TargetName="Ad3"
                    Storyboard.TargetProperty="Opacity">
                    <SplineDoubleKeyFrame KeyTime="0:0:0.25" Value="0" />
                </DoubleAnimationUsingKeyFrames>
                <DoubleAnimationUsingKeyFrames
                    BeginTime="00:00:32.75"
                    Storyboard.TargetName="Ad4"
                    Storyboard.TargetProperty="Opacity">
                    <SplineDoubleKeyFrame KeyTime="0:0:0.25" Value="0" />
                </DoubleAnimationUsingKeyFrames>
            </Storyboard>
        </Grid.Resources>

        <Grid.Triggers>
            <EventTrigger RoutedEvent="FrameworkElement.Loaded">
                <BeginStoryboard Storyboard="{StaticResource Slide}" />
            </EventTrigger>
        </Grid.Triggers>

        <Image  Source="/MyApp;component/Resources/Images/SecondScreen/1.png"  Name="Ad1" Opacity="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        <Image  Source="/MyApp;component/Resources/Images/SecondScreen/2.png"  Name="Ad2" Opacity="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        <Image  Source="/MyApp;component/Resources/Images/SecondScreen/3.png"  Name="Ad3" Opacity="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        <Image  Source="/MyApp;component/Resources/Images/SecondScreen/4.png"  Name="Ad4" Opacity="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>

0 ответов

Другие вопросы по тегам