Thumb コントロールの DragDelta イベントと DragCompleted イベント
Thumb コントロールはドラッグ&ドロップ操作の実装を簡略化できるコントロールで、ドラッグ操作中はDragDelta イベントが、ドロップ操作をおこなうと DragCompleted イベントが発生します。また、それぞれのイベント引数 DragDeltaEventArgs クラスおよび DragCompletedEventArgs クラスには、HorizontalChange プロパティおよび VerticalChange プロパティがあります。これらは水平方向または垂直方向のマウスの移動量を示します。ここで注意しなければならないのは、DragDelta イベントで取得できるマウスの移動量が、スケーリングおよび回転した座標系における移動量を表しているということです。
例えば次の図のようにコントロールの左上から右下にかけてドラッグ&ドロップ操作をおこないます。このとき、DragDelta イベントハンドラにおける移動量と DragCompleted イベントハンドラにおける移動量はどちらも同じ値となります。
ところが、次の図のようにスケーリングしたコントロールに対して同じくらいの移動量のドラッグ&ドロップ操作をおこなうと、DragDelta イベントハンドラで取得したときの移動量がスケーリングされていることがわかります。
また、次の図のように回転したコントロールに対してドラッグ&ドロップ操作をおこなうと、DragDelta イベントハンドラで取得したときの移動量が回転座標系における値であることがわかります。
一方、どのような場合でも DragCompleted イベントハンドラで取得できるマウスの移動量はコントロールの変形によらず元の座標系での値となっています。
Tweet