나는 WPF 및 애니메이션을 배우려고 노력하고 있습니다. 나는 사용자가 마우스를 사용하여 타원을 움직일 수있는 간단한 프로그램을 가지고있다. 마우스 버튼을 놓으면 타원의 위치가 화면 상단으로 움직입니다.초보자 WPF : 애니메이션이 연결된 속성을 제거합니까?
이 잘 나는 타원을 잡고 처음으로 작동합니다. 그러나 두 번째로 나는 타원을 잡아서 더 이상 y- 위치를 변경할 수 없습니다 (그러나 x- 위치는 여전히 변경할 수 있습니다). 애니메이션이 어떻게 든 연결 Canvas.Top
속성을 제거합니까? 어떻게하면이 문제를 해결할 수 있습니까?
여기 (지도 모르기 때문에 mouseUp 핸들러에 위치) 애니메이션을 시작하는 코드
Duration duration = new Duration(TimeSpan.FromSeconds(5.0*oldY/1000));
DoubleAnimation anim = new DoubleAnimation(oldY, 0, duration); // move to top of canvas
_shapeSelected.BeginAnimation(Canvas.TopProperty, anim);
이며, 여기에 마우스 이동 처리기
private void Canvas_MouseMove_1(object sender, MouseEventArgs e)
{
if (_shapeSelected != null)
{
Point pt = e.GetPosition(theCanvas);
Canvas.SetLeft(_shapeSelected, (pt.X-_posOfMouseOnHit.X) + _posOfShapeOnHit.X);
Canvas.SetTop(_shapeSelected, (pt.Y-_posOfMouseOnHit.Y) + _posOfShapeOnHit.Y);
}
}
BeginAnimation에 세 번째 인수가 HandoffBehavior 아닌 FilllBehavior 인을 제거하려고합니다. – ragnarius
제 대답에는 BeginAnimation에 대한 세 번째 인수가 없습니다. 대신 DoubleAnimation 생성자에 대한 또 다른 인수입니다. 'FillBehavior.Stop'은 여러분이 여기서 필요한 것입니다. – Clemens
감사합니다. 처음에는 솔루션을 읽지 않았습니다. 이제 작동합니다! – ragnarius