С# uwp анимация заставляет текст мерцать

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

Вот пример кода, который я использую:

        sb1 = new Storyboard();
        DoubleAnimationUsingKeyFrames animationKeyFrames = new DoubleAnimationUsingKeyFrames();

        var keyFrameStart = new EasingDoubleKeyFrame();
        keyFrameStart.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(0));
        keyFrameStart.Value = TextWidth;

        var keyFrameEnd = new EasingDoubleKeyFrame();
        keyFrameEnd.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(10000));
        keyFrameEnd.Value = -TextWidth;

        animationKeyFrames.KeyFrames.Add(keyFrameStart);
        animationKeyFrames.KeyFrames.Add(keyFrameEnd);

        Storyboard.SetTargetProperty(animationKeyFrames, "(Canvas.Left)");
        Storyboard.SetTarget(animationKeyFrames, textBlock1);

        sb1.RepeatBehavior = RepeatBehavior.Forever;
        sb1.Children.Add(animationKeyFrames);

        sb1.Begin();

Кто-нибудь знает какое-либо свойство, какой-то двойной буфер или что-то в этом роде, чтобы обойти эту проблему?


person user3239349    schedule 21.02.2017    source источник


Ответы (1)


На самом деле, эта проблема была больше связана с производительностью устройства. Я проверил ваш код, в вашем коде нет проблем.

Я протестировал ваш код на разных конфигурациях машин. Феномен «мерцания» был другим.

Для решения этой проблемы есть обходной путь.

Вы можете решить эту проблему, установив большую продолжительность (например, keyFrameEnd.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(20000));).

person Xie Steven    schedule 22.02.2017