0

XAML に imagecanvas が 1 つあります。

 <Canvas Name="imgCanvas" >
                <Canvas.RenderTransform>
                    <CompositeTransform TranslateX="0" TranslateY="0" CenterX="0" CenterY="0"></CompositeTransform>
                </Canvas.RenderTransform>



            </Canvas>

クラスコンストラクターで、このキャンバスにドラッグイベントを追加しています

   g = GestureService.GetGestureListener(imgCanvas);
            g.DragStarted += new EventHandler<DragStartedGestureEventArgs>(g_DragStarted);
            g.DragDelta += new EventHandler<DragDeltaGestureEventArgs>(g_DragDelta);
            g.DragCompleted += new EventHandler<DragCompletedGestureEventArgs>(g_DragCompleted);

1タップ機能で、画像を動的に作成し、キャンバスの子として追加しています

タップイベントが終了したら、その画像をドラッグできます。

ホールドタイプの機能を使用できる方法はありますか..タップを使用する代わりに、マウスを上げずにホールドとホールド機能を使用できます。ドラッグできます。

mouseleftbuttondown と mousemove イベントも試してみましたが、マウス移動機能ではドラッグできません。

Ct.translateX+=e.GetPosition(layoutGrid).X;//not working

Ct.translateY+=e.GetPosition(layoutGrid).Y;

画像をキャンバスに追加して、1回のタップでドラッグできるようにする方法を教えてください。

4

1 に答える 1

0

検出して応答する 2 つの非常に異なるアクションがあるため、1 つのイベントでこれを行うことはできません。

まず、ツールキットのジェスチャーを使用しないでください。それらは非推奨であり、パフォーマンス/メモリの問題があります。

マウスイベントでこれを行うことができるはずです。あなたがする必要があること:
- マウスダウンの後、動きがほとんどなく、短期間にマウスが上がらない限り、画像を作成します。
- 画像が作成された後、マウスが上がるまで画像の位置を更新することで、mousemove イベントに応答します。

多くの楽しいエッジ ケースを処理する可能性がありますが、それらを見つけることができると確信しています。;)

于 2013-03-21T18:13:19.367 に答える