如何在uwp中获得触摸输入?

狮子座

我需要,如果用户用一根手指触摸画布控件,则绘图过程必须开始;如果用户用两根手指触摸画布控件,则画布区域必须滚动/平移。我怎样才能做到这一点?

谢谢

格蕾丝·冯

我们可以使用Pointer事件来检测UWP中的多个手指输入。例如:

<ScrollViewer x:Name="scrollViewer" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Hidden"
              VerticalScrollMode="Disabled" HorizontalScrollMode="Disabled">
    <canvas:CanvasControl x:Name="canvasControl" Draw="CanvasControl_Draw" CreateResources="canvasControl_CreateResources" ClearColor="CornflowerBlue"
                          PointerPressed="canvasControl_PointerPressed" PointerReleased="canvasControl_PointerReleased" PointerExited="canvasControl_PointerReleased"
                          PointerCanceled="canvasControl_PointerPressed"
                          PointerMoved="canvasControl_PointerMoved" Width="1200">
    </canvas:CanvasControl>
</ScrollViewer>

正如你所看到的,我放了ScrollViewer出来的canvas:CanvasControl,所以会在画布上能够滚动。后面的代码:

private CanvasRenderTarget renderTarget;

private async void CanvasControl_Draw(Microsoft.Graphics.Canvas.UI.Xaml.CanvasControl sender, Microsoft.Graphics.Canvas.UI.Xaml.CanvasDrawEventArgs args)
{
    args.DrawingSession.DrawImage(renderTarget);
}

private void canvasControl_CreateResources(CanvasControl sender, Microsoft.Graphics.Canvas.UI.CanvasCreateResourcesEventArgs args)
{
    renderTarget = new CanvasRenderTarget(sender, (float)sender.ActualWidth, (float)sender.ActualHeight);
}

private List<PointerPoint> m_pt = new List<PointerPoint>();

private void canvasControl_PointerPressed(object sender, PointerRoutedEventArgs e)
{
    PointerPoint cp = e.GetCurrentPoint(canvasControl);
    m_pt.Add(cp);
    if (m_pt.Count == 2)
    {
        scrollViewer.HorizontalScrollMode = ScrollMode.Enabled;
        scrollViewer.VerticalScrollMode = ScrollMode.Enabled;
    }
}

private void canvasControl_PointerReleased(object sender, PointerRoutedEventArgs e)
{
    if (m_pt.Count == 1)
        canvasControl.Invalidate();
    scrollViewer.HorizontalScrollMode = ScrollMode.Disabled;
    scrollViewer.VerticalScrollMode = ScrollMode.Disabled;
    m_pt.Clear();
}

private void canvasControl_PointerMoved(object sender, PointerRoutedEventArgs e)
{
    if (m_pt.Count == 1)
    {
        var pt = e.GetCurrentPoint(canvasControl);
        using (var ds = renderTarget.CreateDrawingSession())
        {
            ds.DrawCircle(new Vector2((float)pt.Position.X, (float)pt.Position.Y), 2, Colors.Black);
        }
    }
    else
    {
        if (m_pt.Count > 2)
            m_pt.Clear();
    }
}

当用一根手指绘制时,在我的演示中,画布仅在释放指针时才会更新其布局。您可以更改代码,以使画布在每次移动指针时进行更新。但是我认为,您需要canvas:CanvasControl用另一个Win2D控件替换,有关更多信息,您可以参考CanvasControl.Invalidate Method

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在uwp中获得触摸输入?

来自分类Dev

如何在输入balise中获得价值

来自分类Dev

如何在 UWP 中获得这个箭头图标?

来自分类Dev

如何在Windows 10 UWP中为网格添加触摸操作事件?

来自分类Dev

如何在WPF(C#/ XAML)中获得不同的高级触摸手势?

来自分类Dev

如何在iOS Xamarin C#中获得正确的触摸像素值

来自分类Dev

Bootstrap:如何在输入字段中获得纯边框?

来自分类Dev

如何在Matlab中获得用户徒手输入?

来自分类Dev

如何在Julia中获得输入字符的字符?

来自分类Dev

如何在python discord bot中获得用户输入?

来自分类Dev

我如何在Practice.geektogeek中获得输入?

来自分类Dev

如何在 macOS 中获得实时麦克风输入?

来自分类Dev

如何在Android / Google Glass中管理语音和触摸输入的多个菜单

来自分类Dev

如何在Unix中触摸,rm和触摸?

来自分类Dev

如何限制触摸输入?

来自分类Dev

如何在UIScrollView中检测触摸点

来自分类Dev

如何在Swift中识别连续触摸?

来自分类Dev

如何在SpriteKit中检测触摸位置?

来自分类Dev

如何在Android中检测触摸速度

来自分类Dev

如何在Quintus中禁用触摸?

来自分类Dev

如何在C#WPF中在触摸屏上识别输入指针是鼠标还是手指?

来自分类Dev

如何从RecyclerView获得触摸反馈?

来自分类Dev

如何在输入JSON到JOLT规范中添加特定字段以在NIFI中获得所需的输出?

来自分类Dev

当场景偏移时,如何确保仍能获得正确的触摸输入?

来自分类Dev

UWP-如何在“ MasterDetailsView”模板中实现数据输入表单?

来自分类Dev

如何在 UWP 或 C# 中查找输入的指针或存在的指针等指针事件类型?

来自分类Dev

如何在C的一行中获得多个输入?

来自分类Dev

如何在不使用字符串的情况下在Java中获得输入?

来自分类Dev

您如何在查看控制器代码中获得文本字段输入?

Related 相关文章

  1. 1

    如何在uwp中获得触摸输入?

  2. 2

    如何在输入balise中获得价值

  3. 3

    如何在 UWP 中获得这个箭头图标?

  4. 4

    如何在Windows 10 UWP中为网格添加触摸操作事件?

  5. 5

    如何在WPF(C#/ XAML)中获得不同的高级触摸手势?

  6. 6

    如何在iOS Xamarin C#中获得正确的触摸像素值

  7. 7

    Bootstrap:如何在输入字段中获得纯边框?

  8. 8

    如何在Matlab中获得用户徒手输入?

  9. 9

    如何在Julia中获得输入字符的字符?

  10. 10

    如何在python discord bot中获得用户输入?

  11. 11

    我如何在Practice.geektogeek中获得输入?

  12. 12

    如何在 macOS 中获得实时麦克风输入?

  13. 13

    如何在Android / Google Glass中管理语音和触摸输入的多个菜单

  14. 14

    如何在Unix中触摸,rm和触摸?

  15. 15

    如何限制触摸输入?

  16. 16

    如何在UIScrollView中检测触摸点

  17. 17

    如何在Swift中识别连续触摸?

  18. 18

    如何在SpriteKit中检测触摸位置?

  19. 19

    如何在Android中检测触摸速度

  20. 20

    如何在Quintus中禁用触摸?

  21. 21

    如何在C#WPF中在触摸屏上识别输入指针是鼠标还是手指?

  22. 22

    如何从RecyclerView获得触摸反馈?

  23. 23

    如何在输入JSON到JOLT规范中添加特定字段以在NIFI中获得所需的输出?

  24. 24

    当场景偏移时,如何确保仍能获得正确的触摸输入?

  25. 25

    UWP-如何在“ MasterDetailsView”模板中实现数据输入表单?

  26. 26

    如何在 UWP 或 C# 中查找输入的指针或存在的指针等指针事件类型?

  27. 27

    如何在C的一行中获得多个输入?

  28. 28

    如何在不使用字符串的情况下在Java中获得输入?

  29. 29

    您如何在查看控制器代码中获得文本字段输入?

热门标签

归档