Inkcanvas Eraser.
-
14-11-2019 - |
Вопрос
У меня есть 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
.
Попробуйте:
- Выбор ластика, нажав e, Eraser STYLUSTIP появится прямоугольный
- Нажмите + знак, чтобы увеличить размер, вы не увидите никаких изменений.Почему?
- Теперь вы нажимаете I, чтобы изменить режим редактирования, появится наконечник чернил.
- Нажмите снова, чтобы пересмотреть на ластик.Вы увидите, что форма ластики была изменена.
Почему не после нажатия + знак?
Решение
от Помощь :
«Если вы измените 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;
}
. Не связан с StackOverflow