我有一个包含在堆栈面板内的按钮列表,该堆栈面板将它们水平堆叠。我想知道 C# 背后的代码来应用动画,这样如果我的鼠标靠近 MainWindow 的左端,按钮就会慢慢向右移动。而如果我的鼠标靠近 MainWindow 的右侧,则按钮会缓慢地向左移动。
按钮是在运行时添加和设置样式的。
我有一个包含在堆栈面板内的按钮列表,该堆栈面板将它们水平堆叠。我想知道 C# 背后的代码来应用动画,这样如果我的鼠标靠近 MainWindow 的左端,按钮就会慢慢向右移动。而如果我的鼠标靠近 MainWindow 的右侧,则按钮会缓慢地向左移动。
按钮是在运行时添加和设置样式的。
如果您可以使用 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)
根据您的需要进行调整。
祝你好运。