2

我在 a 中有一个图像Canvas,但是当我使用DoubleAnimation移动它然后使用Canvas.SetLeft(image)时,该方法被忽略,再次移动它的唯一方法是使用动画。有什么问题Canvas.SetLeft(control)

以下是对正在发生的事情的图像的解释:

在此处输入图像描述

属性中的默认硬币位置为 0 Canvas.Left

在此处输入图像描述

我用鼠标用下一个代码移动它;

Point p = Mouse.GetPosition(cCoinContainer);
Canvas.SetLeft(iCoin, p.X);

在此处输入图像描述

当鼠标离开画布时,动画将硬币移动到原来的Canvas.Left位置。

问题是当我再次这样做时(用鼠标移动硬币Canvas.SetLeft(iCoin, p.X);完全被忽略,只适用于动画。

4

2 回答 2

2

您的问题似乎是 MSDN 关于Animation Tips and Tricks的帖子中解决的一般问题之一。要解决此问题,请尝试将动画设置FillBehaviorStop

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

通过将 FillBehavior 设置为 Stop,您可以告诉动画在其活动期结束后停止影响其目标属性。[ MSDN ]

于 2014-03-02T02:47:24.117 回答
0

我想你想用鼠标拖动图像吗?如果是对的;您应该在矩形上添加一个 MouseCapture() 以使用鼠标动画更新鼠标位置,并在完成后调用 RealeaseMouseCapture;在 MouseUp 事件中导致 GetMousePosition 返回当前鼠标位置一次。祝你好运。如果您需要一些,请随时询问!

于 2014-03-02T02:26:23.120 回答