改变矩形的边距是一个不好的动画方法吗?

本文关键字:一个 动画 方法 改变 | 更新日期: 2023-09-27 18:06:44

我正在尝试使用WPF在c#中创建一个视频跟踪条,目的是模仿标准跟踪条,如Youtube的跟踪条,允许用户将拇指拖动到一个新的位置,在视频移动时实时更新视频的位置。

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

它是一种工作,但运动是相当跳跃(播放是好的,它的滑块移动是奇怪的),并朝着滑块的结束矩形(拇指)是一种扭曲。它会变薄,有时甚至会消失。

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

改变矩形的边距是一个不好的动画方法吗?

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

在WPF中更有效的动画视觉效果的方法是使用TranslateTransform附加到项目的RenderTransform属性。改变TranslateTransformXY属性将立即改变项目的屏幕位置,而无需昂贵的布局重新计算。这些属性中最好的是DependencyProperty,所以它们可以被数据绑定到视图中的属性。