2017-06-09 2 views
0

J'ai donc un InkCanvas auquel j'ai ajouté des "traits personnalisés".Comment supprimer les traits personnalisés ajoutés à un WPF InkCanvas DrawingContext ne connaissant que le rectangle de délimitation?

Je suis à une perte complète quant à la façon de effacer coups personnalisés ajoutés aux InkCanvas par son DrawingContext. (Google a été d'aucune aide :() Faire l'hypothèse que j'ai un rectangle de délimitation pour la zone sur l'InkCanvas je veux effacer, comment cela peut-il être fait?

(Je viens rapidement à la conclusion qu'une fois quelque chose est attirée sur le DrawingContext il ne peut pas être supprimé -. convered seulement :()

The Strokes personnalisés sont créés de manière standard en redéfinissant la méthode DrawCore de course, par exemple,

// Draw Rectangle 
public class RectangleStroke : Stroke 
{ 
    // Constructor 
    public RectangleStroke(StylusPointCollection pts) 
     : base(pts) 
    { 
     StylusPoints = pts; 
    } 

    protected override void DrawCore(DrawingContext drawingContext, DrawingAttributes drawingAttributes) 
    { 
     if (drawingContext == null) 
     { 
      throw new ArgumentNullException("drawingContext"); 
     } 
     if (null == drawingAttributes) 
     { 
      throw new ArgumentNullException("drawingAttributes"); 
     } 
     DrawingAttributes originalDa = drawingAttributes.Clone(); 
     SolidColorBrush brush = new SolidColorBrush(drawingAttributes.Color); 
     brush.Freeze(); 
     Pen pen = new Pen(brush, 1); 

     StylusPoint stp = StylusPoints[0]; 
     StylusPoint sp = StylusPoints[1]; 

     drawingContext.DrawRectangle(brush, pen, new Rect(new Point(sp.X, sp.Y), new Point(stp.X, stp.Y))); 
    } 

} 

Des méthodes similaires aboutissent à une image comme: enter image description here

Comment les traits personnalisés sont-ils effacés en ne connaissant que le rectangle englobant?

Merci pour toute aide ou suggestion.

Répondre

0

Ugh ... Ce qui aurait dû être évident est que les traits personnalisés héritent de Stroke et même si un datacontext une fois écrit ne peut pas être écrit, l'InkCanvas peut effacer ses traits - y compris les traits personnalisés - en changeant le InkCanvasEditingMode à EraseByStroke. J'espère que cela aide quelqu'un.