InkCanvas не работает на ощупь.

Это мой код Рисование контура мышью, но это не рисование на ощупь в первый раз, а затем начертание контура. Путь не рисуется при первом касании.

Xaml

<Grid PointerMoved="Grid_PointerMoved"
      PointerPressed="Grid_PointerPressed">

    <InkCanvas x:Name="inkCanvas" ManipulationMode="System" />

</Grid>

C#

// Тип InputDevice как None

      private void InkPresenter_StrokesCollected(Windows.UI.Input.Inking.InkPresenter sender, 
        Windows.UI.Input.Inking.InkStrokesCollectedEventArgs args)
    {
        inkCanvas.InkPresenter.InputDeviceTypes = 
             Windows.UI.Core.CoreInputDeviceTypes.None;

    }


    private void Grid_PointerMoved(object sender, PointerRoutedEventArgs e)
    {
        inkCanvas.InkPresenter.InputDeviceTypes = 
                 Windows.UI.Core.CoreInputDeviceTypes.Mouse |
                        Windows.UI.Core.CoreInputDeviceTypes.Touch;
    }


   private void Grid_PointerPressed(object sender, PointerRoutedEventArgs e)
    {
        inkCanvas.InkPresenter.InputDeviceTypes = 
         Windows.UI.Core.CoreInputDeviceTypes.Mouse |
            Windows.UI.Core.CoreInputDeviceTypes.Touch;
    }

1 ответ

Причина в том, что вы сбрасываете InputDeviceTypes в None после того, как рисунок завершен, поэтому сначала нажмите InkPresenter поручено не рисовать.

Не вижу смысла менять InputDeviceTypes когда они активируются каждый раз, когда вы нажимаете на InkCanvas тем не мение. Таким образом, вы можете просто установить InputDeviceTypes в Mouse а также Touch в конструкторе и просто удалите все три обработчика событий.

Другие вопросы по тегам