Вопрос

У меня есть SketchPad в качестве генеракодицетагкода;Я хочу изменить размер ластика, поэтому я написал:

Private Sub Sketchpad_KeyDown(sender As System.Object, e As System.Windows.Input.KeyEventArgs) Handles Sketchpad.KeyDown

If e.Key = Key.OemMinus Then

' Decrease size of Eraser to 5*5 

Sketchpad.EraserShape = New RectangleStylusShape(5, 5)

End If

If e.Key = Key.OemPlus Then

' Increase size of Eraser to 50*50 

Sketchpad.EraserShape = New RectangleStylusShape(50, 50)

End If

If e.Key = Key.I Then
' Change editing mode to Ink
Sketchpad.EditingMode = InkCanvasEditingMode.Ink

End If

If e.Key = Key.E Then
' Change editing mode to Eraser
Sketchpad.EditingMode = InkCanvasEditingMode.EraseByPoint

End If

End Sub
.

Попробуйте:

  1. Выбор ластика, нажав e, Eraser STYLUSTIP появится прямоугольный
  2. Нажмите + знак, чтобы увеличить размер, вы не увидите никаких изменений.Почему?
  3. Теперь вы нажимаете I, чтобы изменить режим редактирования, появится наконечник чернил.
  4. Нажмите снова, чтобы пересмотреть на ластик.Вы увидите, что форма ластики была изменена.

    Почему не после нажатия + знак?

Это было полезно?

Решение

от Помощь :

«Если вы измените EraserShape, курсор, отображенный на чернике, не обновляется до тех пор, пока не изменяется следующий изменение редактирования."

Я проверил следующий код, и он работает нормально:

if (e.Key == Key.OemMinus)
{
    ink.EraserShape = new RectangleStylusShape(5, 5);
    var editMode = ink.EditingMode;
    ink.EditingMode = InkCanvasEditingMode.None;
    ink.EditingMode = editMode;
}
if (e.Key == Key.OemPlus)
{
    ink.EraserShape = new RectangleStylusShape(50, 50);
    var editMode = ink.EditingMode;
    ink.EditingMode = InkCanvasEditingMode.None;
    ink.EditingMode = editMode;
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top