我正在为TextBlock创建一个字幕动画。我设法通过在画布上移动文本块来完成此操作。但是问题在于,每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();
有人知道任何属性,一些双重缓冲区或类似的东西以覆盖此问题吗?
实际上,此问题与设备性能更相关。我已经检查了您的代码,您的代码没有问题。
我在机器的不同配置上测试了您的代码。"闪烁"现象不同。
有一个可减轻此问题的解决方法。
您可以通过设置更多的持续时间来缓解此问题(例如keyFrameEnd.KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(20000));
)。