2

に画像がありますが、それを移動してから を使用するCanvasと、メソッドは無視されます。再度移動する唯一の方法はアニメーションを使用することです。何が問題なのですか?DoubleAnimationCanvas.SetLeft(image)Canvas.SetLeft(control)

何が起こっているかの画像付きの説明は次のとおりです。

ここに画像の説明を入力

Canvas.Leftプロパティのデフォルトのコイン位置は 0 です。

ここに画像の説明を入力

次のコードでマウスで移動します。

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

ここに画像の説明を入力

マウスがキャンバスから離れると、アニメーションによってコインが元のCanvas.Left位置に移動します。

問題は、もう一度やり直すときです(マウスでコインを動かしてもCanvas.SetLeft(iCoin, p.X);完全に無視され、アニメーションでのみ機能します。

4

2 に答える 2

2

あなたの問題は、アニメーションのヒントとコツに関する MSDN の投稿で対処されている一般的な問題の 1 つと思われます。この問題を解決するには、アニメーションFillBehaviorを次のように設定してみてくださいStop:

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

FillBehavior を Stop に設定することで、アニメーションがアクティブな期間の最後に達した後、ターゲット プロパティへの影響を停止するようにアニメーションに指示します。[ MSDN ]

于 2014-03-02T02:47:24.117 に答える
0

画像をマウスでドラッグできるようにしたいと思いますか? 正しければ; 四角形に MouseCapture() を追加して、マウス アニメーションでマウス位置を更新し、終了時に RealeaseMouseCapture を呼び出す必要があります。MouseUp イベントで、GetMousePosition が現在のマウス位置を 1 回返すようにします。幸運を。必要な場合は、お気軽にお問い合わせください。

于 2014-03-02T02:26:23.120 に答える