Uwp xaml 如何计算UWP中画布的PointerMoved事件期间移动的距离?

Uwp xaml 如何计算UWP中画布的PointerMoved事件期间移动的距离?,uwp-xaml,Uwp Xaml,我不知道如何计算此事件期间移动的距离。指针位置给出当前值(x和y)。我需要计算此事件期间移动的距离。指针移动事件是一个连续触发的事件。如果要计算指针移动的距离,需要有一个“起点” 点起始点=新点(0,0); ... c、 指针引用+=已输入; 已输入私有void(对象发送方,PointErrorutedEventArgs e) { PointerPoint CurrentPosition=e.GetCurrentPoint(发送方作为画布); 起始点=当前位置。位置; } 已移动私有void(对

我不知道如何计算此事件期间移动的距离。指针位置给出当前值(x和y)。我需要计算此事件期间移动的距离。指针移动事件是一个连续触发的事件。如果要计算指针移动的距离,需要有一个“起点”

点起始点=新点(0,0);
...
c、 指针引用+=已输入;
已输入私有void(对象发送方,PointErrorutedEventArgs e)
{
PointerPoint CurrentPosition=e.GetCurrentPoint(发送方作为画布);
起始点=当前位置。位置;
}
已移动私有void(对象发送方,PointErrorutedEventArgs e)
{
PointerPoint CurrentPosition=e.GetCurrentPoint(发送方作为画布);
Point PointerPosition=CurrentPosition.Position;
double-xDistance=Math.Abs(PointerPosition.X-StartPoint.X);
double yddistance=Math.Abs(PointerPosition.Y-StartPoint.Y);
双距离=数学Sqrt(xDistance*xDistance+ydDistance*ydDistance);
}

更新

如果我们需要计算两个
PointerMoved
事件之间指针位置的变化,我们需要引入一个变量来记录最后一个指针位置

点前一点;
已移动私有void(对象发送方,PointErrorutedEventArgs e)
{
PointerPoint CurrentPosition=e.GetCurrentPoint(发送方作为画布);
Point PointerPosition=CurrentPosition.Position;
如果(上一个点!=null)
{
double xDistance=Math.Abs(PointerPosition.X-PreviousPoint.X);
double yDistance=Math.Abs(PointerPosition.Y-PreviousPoint.Y);
双距离=数学Sqrt(xDistance*xDistance+ydDistance*ydDistance);
//待办事项使用距离
}
PreviousPoint=指针位置;
}

谢谢。

鼠标点插入画布时,PointerEntered只会触发一次。但在画布内移动鼠标点时,mouseMoved事件会持续触发。那么它将如何正确?它会产生错误的结果?对于每个pointermoved事件,我想计算移动的距离?您好,该方法显示鼠标移动期间相对于起点的直线距离。触发
PointerInterted
事件时,将更新起点,并且每次鼠标移动时,都会更新相对距离。你说的移动距离是什么意思?触发两个
PointerMoved
事件时鼠标移动的距离是吗?是的,你是对的…触发两个PointerMoved事件时鼠标移动的距离Shello,抱歉误解,我已经更新了答案,请检查。您好,
Pointer
相关事件是低级事件,通过
GetIntermediatePoints
方法返回的结果将因输入设备而异。对于鼠标设备,建议使用变量记录位置变化。
 Canvas c=new Canvas();
 c.Width=1200;
 c.Height=700;
 c.PointerMoved+=Moved;
 private void Moved(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
 {
        PointerPoint CurrentPosition = e.GetCurrentPoint(sender as Canvas);
        Point PointerPosition = CurrentPosition.Position;

 }