Question

J'ai Sketchpad comme InkCanvas; Je veux changer la taille de la gomme, donc j'ai écrit:

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

Essaye ça:

  1. Sélectionnez Eraser en appuyant sur E, Eraser StyLustip apparaîtra rectangulaire
  2. Appuyez sur + signe pour augmenter la taille, vous ne verrez aucune modification. Pourquoi?
  3. Maintenant, vous appuyez sur I pour modifier le mode d'édition, la pointe de l'encre apparaîtra.
  4. Appuyez à nouveau sur E pour reprendre à Eraser. Vous verrez que la forme de gomme a été modifiée.

Pourquoi pas après avoir appuyé sur + signe?

Était-ce utile?

La solution

Du aider:

"Si vous modifiez l'ERASERSHAPE, le curseur rendu sur les Inkcanvas n'est pas mis à jour avant le changement de mode d'édition suivant."

J'ai testé le code suivant et cela fonctionne bien:

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top