스택 패널 안에 가로로 쌓아 올린 버튼 목록이 있습니다. 마우스를 MainWindow의 왼쪽 끝 근처에 놓으면 버튼이 천천히 오른쪽으로 움직 이도록 애니메이션을 적용하는 C#의 코드를 알고 싶습니다. 반면 내 마우스가 MainWindow의 오른쪽 근처에 있으면 버튼이 천천히 왼쪽으로 이동합니다.컨트롤을 수평으로 이동
버튼은 런타임에 추가되고 스타일이 지정됩니다.
스택 패널 안에 가로로 쌓아 올린 버튼 목록이 있습니다. 마우스를 MainWindow의 왼쪽 끝 근처에 놓으면 버튼이 천천히 오른쪽으로 움직 이도록 애니메이션을 적용하는 C#의 코드를 알고 싶습니다. 반면 내 마우스가 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
스택 패널 자체를 움직일 수 있습니까? 스택 패널이란 무엇입니까? –