WPF-inkcan выполняет операцию отмены после выполнения inkCanvas1.Strokes.Стереть ()

#c# #wpf #multi-touch #stroke #inkcanvas

#c# #wpf #мультитач #обводка #inkcanvas

Вопрос:

У меня есть приведенный ниже код

 private void inkCanvas1_OnTouchMove(object sender, TouchEventArgs touchEventArgs)
{
    StylusShape EraseShape = (StylusShape)new RectangleStylusShape(20, 20, 0);
    List<Point> enumrator = new List<Point>();
    TouchPoint touchPoint = touchEventArgs.GetTouchPoint(this);

    enumrator.Add(new Point(touchPoint.Position.X, touchPoint.Position.Y));
    inkCanvas1.Strokes.Erase(enumrator, EraseShape);//**reverse operation of this statement**
}
  

и я хочу отменить стертые штрихи после выполнения операции отмены.

Я попробовал приведенный ниже код события. но когда я стираю несколько штрихов, эта логика работает плохо.

 System.Windows.Ink.StrokeCollection addedStrokes;
System.Windows.Ink.StrokeCollection removedStrokes;
bool undoRedoInProcess = false;

private void Strokes_StrokesChanged(object sender, System.Windows.Ink.StrokeCollectionChangedEventArgs e)
{
    if (undoRedoInProcess)
    {
       addedStrokes = e.Added;
       removedStrokes = e.Removed;
    }       
}


private void Undo()
{
    undoRedoInProcess = true;
    inkCanvas1.Strokes.Remove(removedStrokes);
    inkCanvas1.Strokes.Add(addedStrokes);
    undoRedoInProcess = false;
}
private void Redo()
{
    undoRedoInProcess = true;
    inkCanvas1.Strokes.Add(addedStrokes);
    inkCanvas1.Strokes.Remove(removedStrokes);
    undoRedoInProcess = false;
}
  

Комментарии:

1. @clemens пожалуйста, проверьте, что я обновил код.

2. Так что же именно не работает? Вы не показали нам ничего, что связано с потенциальной функцией отмены.

3. Я хочу отменить исходные штрихи после удаления штрихов из Inkcavnas. inkCanvas1.Strokes. Erase(enumrator, EraseShape);//обратная операция этого оператора.

4. Уверен, что вы этого хотите. Что вы пытались реализовать? Когда вы пишете » эта логика работает плохо «, должно быть что-то…

5. Привет, Сандип, у Microsoft нет события отмены штриха для inkcanvas. Вы можете обрабатывать операции отмены повтора программно. Ссылка на операцию отмены-повтора UWP inkcanvas приведена ниже: ссылка