2011-03-30 4 views
0

J'ai un bloc croquis en tant que InkCanvas; Je veux changer la taille de la gomme, donc je l'ai écrit:InkCanvas Eraser

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 

Essayez ceci:

  1. Sélectionnez gomme à effacer en appuyant sur e, gomme à effacer stylusTip sera rectangulaire apparaît
  2. Appuyez sur + signe pour augmenter la taille, vous ne verrez aucun changement. Pourquoi?
  3. Maintenant que vous appuyez sur i pour changer le mode d'édition, l'info-bulle apparaît.
  4. Appuyez de nouveau sur e pour rétablir l'effaceur. Vous verrez que la forme de la gomme a été modifiée.

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

Répondre

2

De l'help:

« Si vous modifiez le EraserShape, le curseur rendu sur la InkCanvas est pas mis à jour jusqu'à ce que le prochain changement de EditingMode. »

J'ai testé le code suivant et il fonctionne très 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; 
} 
+0

Mais ce n'est pas la façon dont il devrait fonctionner, la gomme devrait refléter les changements que nous ne bascule en mode d'édition car il fonctionne pour la forme d'encre. ink.EraserShape = new RectangleStylusShape (5, 5); Devrait travailler, Pourquoi ne pas travailler ??? –

+1

Vous et moi ne sommes peut-être pas d'accord mais c'est dans le MSDN donc c'est une fonctionnalité connue et prévue. –

Questions connexes