wpf - How to get just the resulting strokes when erasing by point on InkCanvas? -


i don't understand. lets draw "s" on inkcanvas.

the onstrokecollected event fire. inside onstrokecollected event, send stroke inkanalyzer:

analyzer.addstroke(e.stroke) 

now erase-by-point center point of "s".

the onstrokeerasing event fires. can remove original "s" inkanalzyer:

analyzer.removestroke(e.stroke) 

but, have 2 strokes. top , bottom of original "s". since have 2 strokes, how each of these "new" strokes add inkanalyzer (having removed original composite stroke "s") without removing entire previous stroke collection , adding anew new strokecollection ?

i sincerely appreciate ideas.

the idea come posted below. surely appreciate better solution.

xaml

  <ink:custominkcanvas x:name="inkcanvas"  strokes="{binding strokes}" />  

viewmodel

        strokes = new strokecollection();         (strokes inotifycollectionchanged).collectionchanged += (sender, e) =>         {             if (iserasingbypoint == true)             {                 if (e.olditems != null && e.olditems.count > 0)                 {                     foreach (stroke s in e.olditems)                     {                     }                 }                  if (e.newitems != null && e.newitems.count > 0)                 {                     foreach (stroke s in e.newitems)                     {                     }                  }             }             iserasingbypoint = false;          };       public void onstrokecollected(object sender, inkcanvasstrokecollectedeventargs e)     {         // onstrokecollected event occurs after strokecollection.collectionchanged event.         analyzer.addstroke(e.stroke);     }      public void onstrokeerasing(object sender,  inkcanvasstrokeerasingeventargs e)     {         // when erasingbypoint, onstrokeerasing event occurs before strokecollection.collectionchanged event.         // if erasing stroke, strokecollection.collectionchanged event not called.         if (editingmode == inkcanvaseditingmode.erasebypoint)             iserasingbypoint = true;         else             analyzer.removestroke(e.stroke);     } 

hope of use somebody.


Comments

Popular posts from this blog

javascript - Jquery show_hide, what to add in order to make the page scroll to the bottom of the hidden field once button is clicked -

javascript - Highcharts multi-color line -

javascript - Enter key does not work in search box -