如何使用C#或XAML创建自动动画轮播图像?

我在Web开发中做了旋转木马,但是通过XAML或C#在WPF中制作动画对我来说是新的。 网上有一些例子,但它们要么已经过时,要么不是我想要的。 即使我玩其他项目的源代码,也不是我希望的。

我想让图像自动从左到右(水平)滑动。 用户无法与图像交互以停止滑动。 虽然我可以在ScrollViewer手动执行此操作,但该过程是手动的…

ScrollViewer没有任何动画依赖项。 我尝试使用它来查看是否可能,但应用程序将始终崩溃。 我用的例子。 。

我尝试过的另一种尝试是将图像存储在StackPanel ,确保StackPanel是我的一个图像的宽度,然后将DispatcherTimer设置为为TranslateTransform的X属性设置动画。 但是……那没有去任何地方。

使用ScrollViewerStackPanel并不重要。 我只是希望有类似旋转木马的效果自动转换图像。 有点像这个

我目前正在使用Visual Studio 2012和2013,如果有帮助的话。 有没有办法做到这一点?

我已经在wpf中准备了示例性的旋转木马。 例如,您可能希望以UserControl的forms使用代码。 正如您所建议的那样,我使用StackPanel准备了旋转木马。 我的表格代码如下:

                    

WindowResources中的Storyboard元素定义要执行的动画。 它将更改应用于StackPanel“Carousel”的TranslationTransform的X属性 – 这将导致该面板的动画移动。 面板内的3个按钮模拟旋转木马的3个面板。 底部有2个按钮 – 一个用于向左移动,另一个用于向右移动。 它们之间存在回调方法。 表单后面的代码看起来像这样:

 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private int currentElement = 0; private void Left_Click(object sender, RoutedEventArgs e) { if(currentElement < 2) { currentElement++; AnimateCarousel(); } } private void Right_Click(object sender, RoutedEventArgs e) { if (currentElement > 0) { currentElement--; AnimateCarousel(); } } private void AnimateCarousel() { Storyboard storyboard = (this.Resources["CarouselStoryboard"] as Storyboard); DoubleAnimation animation = storyboard.Children.First() as DoubleAnimation; animation.To = -this.Width * currentElement; storyboard.Begin(); } } 

currentElement字段保存当前正向用户显示的面板的信息。 方法AnimateCarousel实际上启动动画。 它引用了Resources中定义的Storyboard,并将其DoubleAnimation To属性设置为Carousel面板应移动到的值。 然后通过在故事板上调用Begin方法来执行动画。