将矩形的边距更改为动画的不良方法?

时间:2016-09-13 12:29:26

标签: c# wpf animation margin

我正在尝试使用WPF在C#中创建一个视频轨道栏,目的是模拟标准轨道栏,例如Youtube,它允许用户将拇指拖动到更新视频的新位置'移动时的实时位置。

目前,我在视频播放器上有一个调度程序计时器,它可以检测视频的当前帧何时发生变化,此时它会计算拇指的(左)边距(帧数*像素,帧数)。 当在滑块上按下用户的鼠标时,它暂停视频,开始跟踪鼠标的X位置并将其映射到帧并设置视频当前位置。

它有点工作但运动相当跳跃(播放很好,滑块移动很奇怪)并且在滑块的末端,矩形(拇指)有点扭曲。它变得更薄,有时实际上消失了。

通过边距动画滑块是否效率低,是否有更好的方法来实现这种(交互?)动画?

1 个答案:

答案 0 :(得分:2)

是的,通过Margin属性为拇指制作动画效率非常低,因为它需要WPF重新计算控件的布局,并在每次更新时重新渲染它。

在WPF中以您希望的方式设置动画视觉效果的更有效方法是使用附加到项{q} TranslateTransform属性的RenderTransform。更改X的{​​{1}}和Y属性会立即更改项目的屏幕位置,而无需重新计算昂贵的布局。最重要的是这些属性为TranslateTransform,因此它们可以绑定到视图中的属性。