Frage

Ich habe Skizzenblock als InkCanvas;Ich möchte die Größe des Radiergummis ändern, also habe ich geschrieben:

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

Versuchen Sie dies:

  1. Radiergummi durch Drücken von e auswählen, Radiergummi-Stiftspitze erscheint rechteckig
  2. Drücken Sie + Zeichen, um die Größe zu erhöhen, Sie werden keine Änderungen sehen.Warum?
  3. Jetzt drücken Sie i, um den Bearbeitungsmodus zu ändern.
  4. Drücken Sie e erneut, um zum Radierer zu wechseln.Sie werden sehen, dass die Radiererform geändert wurde.

Warum nicht nach dem Drücken von + Zeichen?

War es hilfreich?

Lösung

Von der helfen:

"Wenn Sie die Radierform ändern, wird der auf dem InkCanvas gerenderte Cursor erst bei der nächsten Änderung des Bearbeitungsmodus aktualisiert."

Ich habe den folgenden Code getestet und er funktioniert einwandfrei:

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top