ManipulationDelta を使用して、キャンバス上で図形を移動しようとしています。それは機能しますが、それらをキャンバスに保持し、拡張して画面に表示するのに問題があります。キャンバスの境界と、その X、Y がまだキャンバス上にあるかどうかをどうにかして判断しようとしていました。たとえば、Y が 0 未満の場合に Y を 0 に設定することで、Ellipse が上から引きずり出されないようにすることができました。
void Shape1_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
Ellipse shape = sender as Ellipse;
TranslateTransform tt = shape.RenderTransform as TranslateTransform;
tt.X += e.Delta.Translation.X;
tt.Y += e.Delta.Translation.Y;
if (tt.Y < 0)
tt.Y = 0;
}
問題は、画面の解像度が異なり、境界を判断できないことです。これは正しいアプローチですか、それともユーザーがアイテムをドラッグできるようにするが、定義された領域内に保持するためのより良い方法はありますか?
あなたが私に与えることができる助けをありがとう!