0

我有一个包含在堆栈面板内的按钮列表,该堆栈面板将它们水平堆叠。我想知道 C# 背后的代码来应用动画,这样如果我的鼠标靠近 MainWindow 的左端,按钮就会慢慢向右移动。而如果我的鼠标靠近 MainWindow 的右侧,则按钮会缓慢地向左移动。

按钮是在运行时添加和设置样式的。

4

1 回答 1

0

如果您可以使用 acanvas而不是 thestackpanel您可以使用此代码立即实现我为您编写的动画:

在你的类中声明一个字段,如下所示:private bool _running = true;

在此之后,您可以使用它来为您的按钮设置动画。

new Thread(() =>
            {
                while (_running)
                {
                    Thread.Sleep(20);

                    canvas.Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(() =>
                    {
                        var position = Mouse.GetPosition(canvas).X;
                        var canvasWidth = canvas.ActualWidth;

                        if (position >=0 && position < 10.0d)
                            btn.SetValue(Canvas.LeftProperty, (double)btn.GetValue(Canvas.LeftProperty) + 1);

                        if (position <= canvasWidth && position > canvasWidth - 10.0d)
                            btn.SetValue(Canvas.LeftProperty, (double)btn.GetValue(Canvas.LeftProperty) - 1);
                    }));
                }
            }).Start();

不要忘记在您的课程中添加以下用法:

using System.Threading;
using System.Windows.Threading;

如果您希望代码使用多个按钮,只需使用一个列表,然后稍微重写代码。也可以Thread.Sleep(20)根据您的需要进行调整。

祝你好运。

于 2012-06-26T09:13:05.953 回答