C# 使用UWP InkCanvas时如何获取鼠标位置
我正在使用C# 使用UWP InkCanvas时如何获取鼠标位置,c#,uwp,C#,Uwp,我正在使用C#UWP编写一个程序,其中Inkcanvas覆盖了整个屏幕。在不禁用此InkCanvas的情况下,我希望获得鼠标位置。我尝试过设置这样一个事件: MyInkCanvas.PointerMoved += MyInkCanvas_PointerMoved; 但是,这个事件从未被调用,因为我猜它是由InkCanvas处理的。相反,我试着做以下几点: MyInkCanvas.addHandler(PointerMovedEvent, new PointerEventHandler(MyIn
C#UWP
编写一个程序,其中Inkcanvas
覆盖了整个屏幕。在不禁用此InkCanvas的情况下,我希望获得鼠标位置。我尝试过设置这样一个事件:
MyInkCanvas.PointerMoved += MyInkCanvas_PointerMoved;
但是,这个事件从未被调用,因为我猜它是由InkCanvas处理的。相反,我试着做以下几点:
MyInkCanvas.addHandler(PointerMovedEvent, new PointerEventHandler(MyInkCanvas_PointerMoved), true);
这也不起作用,这可能意味着我做错了什么,因为AddHandler的文档说明:
为指定的路由事件添加路由事件处理程序,将该处理程序添加到当前元素的处理程序集合中。将HandledEventsTo指定为true,以便调用提供的处理程序,即使该事件在别处处理
如果我理解正确,即使InkCanvas首先处理事件,也应该使事件发生
我还尝试将此代码放在InkCanvas上,得到了相同的结果
那么,如何在不禁用InkCanvas的情况下获取鼠标位置?根据您的要求,您可以通过事件获取鼠标位置。它发生在
InkPresenter
开始处理墨迹笔划之后和停止处理同一笔划之前,表示墨迹数据继续被捕获。您可以使用以下代码和
订阅wetstrokecontinue
事件
CoreWetStrokeUpdateSource coreWetStrokeUpdateSource = CoreWetStrokeUpdateSource.Create(MyInkCanvas.InkPresenter);
coreWetStrokeUpdateSource.WetStrokeContinuing += CoreWetStrokeUpdateSource_WetStrokeContinuing;
您将在wetstrokecontinue
事件处理程序中获得鼠标位置
private void CoreWetStrokeUpdateSource_WetStrokeContinuing(CoreWetStrokeUpdateSource sender, CoreWetStrokeUpdateEventArgs args)
{
var points = args.NewInkPoints;
foreach (var point in points)
{
Debug.WriteLine($"-----{ point.Position.X}--- {point.Position.Y}--");
}
}
您还可以使用PointerEventArgs
获取位置,两者的区别在于触发时间不同
private void StrokeInput_StrokeContinued(Windows.UI.Input.Inking.InkStrokeInput sender, Windows.UI.Core.PointerEventArgs args)
{
var position = args.CurrentPoint.Position;
Debug.WriteLine($"-----{ position.X}--- {position.Y}--");
}
当笔划输入开始并继续被Windows.UI.input.Inking.InkPresenter对象捕获时,会出现StrokeContinued
在Windows.UI.Input.Inking.InkPresenter开始处理墨水后,会出现WetstrokeContinue
笔划和停止处理同一笔划之前,表示继续捕获墨水数据
结果是一样的。但是,
StrokeContinued
使用起来更方便。这非常好用。一个简单的问题:我发现我也可以使用MyInkCanvas.InkPresenter.StrokeInput.StrokeContinued+=StrokeInput\u StrokeContinued
哪些接缝对我来说做同样的事情。你知道在我的案例中,这两者之间有没有什么特别的区别,可以让一个比另一个更好?