0
我有一個按鈕列表包裝在一個堆疊面板,它們水平堆疊。我想知道C#背後的代碼來應用動畫,如果我的鼠標靠近MainWindow的左端,按鈕會慢慢向右移動。而如果我的鼠標靠近MainWindow的右側,按鈕緩慢向左移動。水平移動控件
按鈕在運行時添加和設置樣式。
我有一個按鈕列表包裝在一個堆疊面板,它們水平堆疊。我想知道C#背後的代碼來應用動畫,如果我的鼠標靠近MainWindow的左端,按鈕會慢慢向右移動。而如果我的鼠標靠近MainWindow的右側,按鈕緩慢向左移動。水平移動控件
按鈕在運行時添加和設置樣式。
如果有可能爲你使用canvas
代替stackpanel
您可以使用此代碼來實現我爲你寫馬上動畫:
中聲明你的類像下面的字段: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)
。
祝你好運。
你到目前爲止嘗試過什麼?我會在窗口上使用鼠標事件來捕捉位置。然後,如果鼠標在你想要的位置,你可以滾動。 – webber2k6
是的,我可以做到這一切。只需要知道如何使用Storyboard將控件水平移動到正確的不停止 – RStyle
的片段是否可以移動堆疊面板本身?什麼是包含的堆棧面板? –