2014-03-02 1 views
1

이미지가 Canvas인데, DoubleAnimation을 사용하여 이동 한 다음 Canvas.SetLeft(image)을 사용하면이 메서드는 무시됩니다. 다시 이동하는 유일한 방법은 다음과 같습니다. 애니메이션으로. Canvas.SetLeft(control)의 문제점은 무엇입니까? 여기 수동 컨트롤 속성을 설정하면 WPF의 애니메이션보다 먼저 작동하지 않습니다.

는 무슨 일이 일어나고 있는지의 이미지와 함께 설명입니다

enter image description here

기본 동전 위치는 Canvas.Left 속성에 0입니다.

enter image description here

나는 다음 코드를 사용하여 마우스로 이동;

enter image description here

Point p = Mouse.GetPosition(cCoinContainer); 
Canvas.SetLeft(iCoin, p.X); 
그리고 마우스가 캔버스를 왼쪽 때 Canvas.Left 위치에 원래의에 애니메이션이 동전을 이동합니다.

내가 (Canvas.SetLeft(iCoin, p.X);와 마우스로 동전을 이동이 완전히 무시됩니다 다시 할 때 문제입니다 만 애니메이션으로 작동합니다.

답변

0

내가 오전 오른쪽면? 당신은 마우스로 이미지를 드래그 할 수 있도록 할 생각 ; 당신이 완료 할 때 마우스 애니메이션 와 마우스 위치를 업데이트하고 RealeaseMouseCapture 전화 사각형에 MouseCapture()를 추가해야한다.. 이는 MouseUp 이벤트가 GetMousePosition 한 번 현재 마우스 위치 앞을 돌아 원인이 에서 행운 당신이 경우 물어봐도 되겠습니까?

1

문제는 MSDN 게시물 Animation Tips and Tricks에 게시 된 일반적인 문제 중 하나 인 것으로 보입니다.

<Storyboard> 
    <DoubleAnimation 
     FillBehavior="Stop" 
     ...... 
     /> 
</Storyboard> 

FillBehavior 중지로 설정하면, 당신이 그 활성 기간의 끝에 도달 한 후 목표 속성에 영향을 미치는 중지 애니메이션 알려주기 : 문제를 해결하기 위해, 애니메이션의 FillBehaviorStop로 설정하려고합니다. [MSDN]

관련 문제