我正在尝试使用WPF在C#中创建一个视频轨道栏,目的是模拟标准轨道栏,例如Youtube,它允许用户将拇指拖动到更新视频的新位置'移动时的实时位置。
目前,我在视频播放器上有一个调度程序计时器,它可以检测视频的当前帧何时发生变化,此时它会计算拇指的(左)边距(帧数*像素,帧数)。 当在滑块上按下用户的鼠标时,它暂停视频,开始跟踪鼠标的X位置并将其映射到帧并设置视频当前位置。
它有点工作但运动相当跳跃(播放很好,滑块移动很奇怪)并且在滑块的末端,矩形(拇指)有点扭曲。它变得更薄,有时实际上消失了。
通过边距动画滑块是否效率低,是否有更好的方法来实现这种(交互?)动画?
答案 0 :(得分:2)
是的,通过Margin
属性为拇指制作动画效率非常低,因为它需要WPF重新计算控件的布局,并在每次更新时重新渲染它。
在WPF中以您希望的方式设置动画视觉效果的更有效方法是使用附加到项{q} TranslateTransform
属性的RenderTransform
。更改X
的{{1}}和Y
属性会立即更改项目的屏幕位置,而无需重新计算昂贵的布局。最重要的是这些属性为TranslateTransform
,因此它们可以绑定到视图中的属性。